Подтвердить что ты не робот

Обнаружить цифры или буквы с помощью jquery/javascript?

Я хочу использовать оператор if для запуска кода, только если пользователь вводит букву или цифру.

Я мог бы использовать

 if(event.keyCode == 48 || event.keyCode == 49 || event.keyCode == 50..) {
       // run code
 }

Есть ли более простой способ сделать это? Может быть, некоторые коды клавиш работают не во всех веб-браузерах?

4b9b3361

Ответ 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)