Разрешение только буквенно-цифровых значений
Возможный дубликат:
Как запретить пользователям вводить недопустимые символы внутри поля ввода
У меня есть 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 лучший способ подойти к этой проблеме?
Ответы
Ответ 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_]*$
Некоторые шаблоны, которые могут помочь.. но я думаю, вам придется изменить их в соответствии с вашими потребностями. Я надеюсь, что это поможет.