Обнаружить цифры или буквы с помощью jquery/javascript?
Я хочу использовать оператор if для запуска кода, только если пользователь вводит букву или цифру.
Я мог бы использовать
if(event.keyCode == 48 || event.keyCode == 49 || event.keyCode == 50..) {
// run code
}
Есть ли более простой способ сделать это? Может быть, некоторые коды клавиш работают не во всех веб-браузерах?
Ответы
Ответ 1
Если вы хотите проверить диапазон букв, вы можете использовать больше и меньше:
if (event.keyCode >= 48 && event.keyCode <= 57)
alert("input was 0-9");
if (event.keyCode >= 65 && event.keyCode <= 90)
alert("input was a-z");
Для более динамической проверки используйте регулярное выражение:
var inp = String.fromCharCode(event.keyCode);
if (/[a-zA-Z0-9-_ ]/.test(inp))
alert("input was a letter, number, hyphen, underscore or space");
Смотрите документацию MDC для свойства keyCode
, в котором объясняется разница между этим и свойством which
и какие события они применяют к.
Ответ 2
Во-первых, если вы это делаете, убедитесь, что это событие keypress
, которое является единственным событием, для которого вы можете надежно получить информацию о персонаже, который пользователь набрал. Тогда я бы использовал подход, предложенный Энди Е:
document.onkeypress = function(evt) {
evt = evt || window.event;
var charCode = evt.which || evt.keyCode;
var charStr = String.fromCharCode(charCode);
if (/[a-z0-9]/i.test(charStr)) {
alert("Letter or number typed");
}
};
Если вы хотите проверить backspace, я бы использовал вместо этого событие keydown
и проверил keyCode
из 8, потому что несколько браузеров (включая Chrome) не запускают событие keypress
для ключевого слова backspace.
Ответ 3
Используйте event.key
и современный JS!
Нет числовых кодов больше. Вы можете проверить ключ напрямую.
const key = event.key.toLowerCase();
if (key.length !== 1) {
return;
}
const isLetter = (key >= "a" && key <= "z");
const isNumber = (key >= "0" && key <= "9");
if (isLetter || isNumber) {
// Do something
}
Вы также можете использовать простое регулярное выражение. ^$
обеспечивает 1 символ, i
игнорирую регистр
/^[a-z0-9]$/i.test(event.key)
или индивидуально:
const isLetter = /^[a-z]$/i.test(event.key)
const isNumber = /^[0-9]$/i.test(event.key)
Ответ 4
if(event.keyCode >= 48 && event.keyCode <= 90) {
//the key pressed was alphanumeric
}
Ответ 5
проверка числа, отлично работает для меня
$(document).ready(function () {
$(".TxtPhone").keypress(function (e) {
var key = e.charCode || e.keyCode || 0;
// only numbers
if (key < 48 || key > 58) {
return false;
}
});
});
Ответ 6
Вы также можете использовать charCode с событием onKeyPress:
if (event.charCode > 57 || event.charCode < 48) {
itsNotANumber();
}
else {
itsANumber();
}
Ответ 7
use $.isNumeric(value);
Тип возврата - boolean
Ответ 8
Принять номера или буквы с помощью javascript с помощью динамического процесса, используя регулярное выражение.
Добавить событие onkeypress для конкретного контроля
onkeypress = "javascript: return isNumber (event)"
function numOnly(evt) {
evt = evt || window.event;
var charCode = evt.which || evt.keyCode;
var charStr = String.fromCharCode(charCode);
if (/[0-9]/i.test(charStr)) {
return true;
}
else
return false;
}
function Alphanum(evt) {
evt = evt || window.event;
var charCode = evt.which || evt.keyCode;
var charStr = String.fromCharCode(charCode);
if (/[a-z0-9]/i.test(charStr)) {
return true;
}
else
return false;
}
Ответ 9
$('#phone').on('keydown', function(e) {
let key = e.charCode || e.keyCode || 0;
//32 = space - border of visible and non visible characters - allows us to backspace and use arrows etc
//127 - delete
if (key > 32 && (key < 48 || key > 58) && key !== 127) {
e.preventDefault();
return false;
}
});
Ответ 10
Как сказал @Gibolt, вы должны использовать event.key
Потому что charCode, keyCode и Which устарели.
Ответ 11
Для числовых значений:
function ValidNumeric()
{
var charCode = (event.which) ? event.which:event.KeyCode;
if (charCode>=48 && charCode<=57)
{
return true;
}
else
return false;
}
Здесь 48 и 57 - это диапазон числовых значений.
Для алфавита:
function ValidAplpha()
{
var charCode = (event.which) ? event.which:event.KeyCode;
if(charCode >= 65 && charCode <= 90 || charCode>=97 && charCode<=122)
{
return true;
}
else
return false;
}
Здесь от 65 до 90 - диапазон для столичных алфавитов (AZ) и от 97 до 122 - диапазон для малых алфавитов (az)