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

Разрешение только буквенно-цифровых значений

Возможный дубликат:
Как запретить пользователям вводить недопустимые символы внутри поля ввода

У меня есть 3 текстовых поля на странице. Один из них должен содержать числа, другие алфавиты и 3-й номер или алфавиты.

Поскольку это единственное требование, я не хочу использовать плагин проверки или любой другой сторонний плагин. Как я могу сделать это, создав свой собственный плагин, используя чистый jQuery?

Это то, что я сделал, но у меня возникает ощущение, что код станет слишком длинным

 $(this).keydown(function(e)
        {
            var key = e.charCode || e.keyCode || 0;            
            return (
                key == 8 || 
                key == 9 ||
                key == 46 ||
                (key >= 37 && key <= 40) ||
                (key >= 48 && key <= 57) ||
                (key >= 96 && key <= 105));
        });

http://jsfiddle.net/Cvus8/

Может ли кто-нибудь сказать мне, какой si лучший способ подойти к этой проблеме?

4b9b3361

Ответ 1

Лучшее решение может заключаться в проверке на основе регулярных выражений. Пример ниже ограничивает только буквенно-цифровые символы в поле с id text:

$('#text').keypress(function (e) {
    var regex = new RegExp("^[a-zA-Z0-9]+$");
    var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
    if (regex.test(str)) {
        return true;
    }

    e.preventDefault();
    return false;
});

Ответ 2

Знак в диапазоне 1-9, за которым следуют ноль или более других цифр:

^[1-9]\d*$

Убедитесь, что строка содержит только буквенно-цифровые символы (ASCII), символы подчеркивания и пробелы

^[\w ]+$

Только в алфавитном порядке пробел или _

^[a-zA-Z]+$

Чтобы сопоставить строку, содержащую только те символы (или пустую строку), попробуйте

^[a-zA-Z0-9_]*$

Некоторые шаблоны, которые могут помочь.. но я думаю, вам придется изменить их в соответствии с вашими потребностями. Я надеюсь, что это поможет.