Инициировать событие, когда текстовое поле содержит определенный код клавиши - PullRequest
1 голос
/ 04 мая 2011

В настоящее время я работаю над функциональностью jQuery, чтобы проверить текстовое поле на наличие определенных значений символов, а затем вызвать какое-либо событие в зависимости от того, какой это символ.

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

Одна из вещей, которую я хочу проверить, состоит в том, содержит ли текстовое поле символ @ (что недопустимо в данном текстовом поле, и его код ключа равен 64 для этого сайта - расширяющая головка )

Часть кода, который я пытался использовать:

$("#NoEmailAllowed").live({
    "keyup": function(e) { 
         if((e.keyCode == 64) || (e.which == 64))
         { 
            $(this).addClass("redBg");
         }
     }
});

$("#NoEmailAllowed:contains('@')").live({
     "keyup": function() { 
        $(this).addClass("redBg");
     }
});

$("#NoEmailAllowed").keyup(function(){
     if(this.val().contains("@"))
     {
        $(this).addClass("redBg");
     }
});

Я тоже пробовал много других, но они были тихо похожи на те, что выше.

Итак, чтобы прояснить все, что я пытаюсь достичь, это:
Когда пользователь вводит что-либо в это текстовое поле, jquery должен на лету проверять наличие @ символов, а если он находит какие-либо символы @, инициировать событие - например, оповещение или добавить класс css.

1 Ответ

3 голосов
/ 04 мая 2011

Событие keyup() работает со скан-кодами, лучше использовать keypress() для захвата фактического ввода текста (как указано в документации jQuery ):

$(function(){
    $('#NoEmailAllowed').keypress(function(e) { 
        if(e.which == 64)
        { 
           $(this).addClass("redBg");
        }
    });
});

jQuery нормализует e.which, больше ничего проверять не нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...