У меня есть текстовое поле формы, в котором я хочу позволить только числа и буквы. (т.е. никакой # $!, и т.д....), там способ подбросить ошибку и предотвратить нажатие клавиши от фактического вывода чего-нибудь, если пользователь пытается использовать какой-либо символ кроме чисел и букв? Я пытался найти плагин, но действительно не нашел ничего, что делает это...
$('input').keyup(function() {
var $th = $(this);
$th.val( $th.val().replace(/[^a-zA-Z0-9]/g, function(str) { alert('You typed " ' + str + ' ".\n\nPlease use only letters and numbers.'); return ''; } ) );
});
РЕДАКТИРОВАТЬ:
Здесь есть еще несколько хороших ответов, которые предотвратят ввод данных.
Я обновил свой, так как вы тоже хотели показать ошибку. Замена может принимать функцию вместо строки. Функция запускается и возвращает заменяющее значение. Я добавил предупреждение
, чтобы показать ошибку.
Ну ответ Патрика удаляет символ, если он неправильный, чтобы на самом деле предотвратить вставку символа в поле используйте
$("#field").keypress(function(e) {
// Check if the value of the input is valid
if (!valid)
e.preventDefault();
});
Таким образом письмо не придет в textarea
$('#yourfield').keydown(function(e) {
// Check e.keyCode and return false if you want to block the entered character.
});
Вы можете попробовать это расширение:
jQuery.fn.ForceAlphaNumericOnly =
function()
{
return this.each(function()
{
$(this).keydown(function(e)
{
var key = e.charCode || e.keyCode || 0;
// allow backspace, tab, delete, arrows, letters, numbers and keypad numbers ONLY
return (
key == 8 ||
key == 9 ||
key == 46 ||
(key >= 37 && key <= 40) ||
(key >= 48 && key <= 57) ||
(key >= 65 && key <= 90) ||
(key >= 96 && key <= 105));
})
})
};
Использование:
$("#yourInput").ForceAlphaNumericOnly();