jQuery - проверить символы на нажатии клавиши?

У меня есть текстовое поле формы, в котором я хочу позволить только числа и буквы. (т.е. никакой # $!, и т.д....), там способ подбросить ошибку и предотвратить нажатие клавиши от фактического вывода чего-нибудь, если пользователь пытается использовать какой-либо символ кроме чисел и букв? Я пытался найти плагин, но действительно не нашел ничего, что делает это...

28
задан TwixxyKit 11 May 2010 в 16:39
поделиться

4 ответа

$('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 ''; } ) );
});

РЕДАКТИРОВАТЬ:

Здесь есть еще несколько хороших ответов, которые предотвратят ввод данных.

Я обновил свой, так как вы тоже хотели показать ошибку. Замена может принимать функцию вместо строки. Функция запускается и возвращает заменяющее значение. Я добавил предупреждение , чтобы показать ошибку.

http://jsfiddle.net/ntywf/2/

35
ответ дан 28 November 2019 в 02:55
поделиться

Ну ответ Патрика удаляет символ, если он неправильный, чтобы на самом деле предотвратить вставку символа в поле используйте

$("#field").keypress(function(e) {
    // Check if the value of the input is valid
    if (!valid)
        e.preventDefault();
});

Таким образом письмо не придет в textarea

11
ответ дан 28 November 2019 в 02:55
поделиться
$('#yourfield').keydown(function(e) {
    // Check e.keyCode and return false if you want to block the entered character.
});
10
ответ дан 28 November 2019 в 02:55
поделиться

Вы можете попробовать это расширение:

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();
0
ответ дан 28 November 2019 в 02:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: