Как получить значение keypress из объекта события в jQuery

Я хочу отключить пользователей от ввода символа в поле ввода текста HTML, которое не является буквой или номером.

Эта точная функциональность можно увидеть на странице регистрации Twitter (поле имени пользователя) https://twitter.com/signup.

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

Здесь код:

<input type="text" id="username" name="username" />

<script type="text/javascript">
$("#username").keypress(function(event){   

 // Get the keypress value
 // ...?

// If the keypress value is illegal then disable it
if (...){
   event.preventDefault();
}

});
</script>

Ответ 1

Вы можете использовать свойство "which" объекта события для захвата кода ключа. Вы можете использовать что-то вроде следующего кода, чтобы получить соответствующий символ -

var c = String.fromCharCode(e.which);

Подробнее см. ссылку http://api.jquery.com/keypress/.

Ответ 2

Когда пользователь нажимает клавишу, соответствующий код ascii - это то, что отправлено в событии. Используйте поле e.which

Итак, ваше условное выражение может выглядеть примерно так:

if ( e.which > 47 &&  e.which < 58)
{
    // it is a number
}

Существует много разных способов записи условного. Возможно, используя сопоставление допустимых символов в массиве.

Для справки, Верхний регистр: 65 - 90 Нижний регистр: 97 - 122

Вы должны понимать, что это заставит ваше приложение работать только для людей, печатающих на английском языке, используя стандартный набор ASCII. Международные пользователи не смогут писать в поле формы, потому что эти коды клавиш выходят за пределы стандартного диапазона ASCII и будут использовать другую кодировку. Просто подумать.

Коды Ascii: http://www.petefreitag.com/cheatsheets/ascii-codes/

Ответ 3

    var ako ='';
    var novalue = '';
    jQuery('html').keypress(function(event){
        var valuekey = event.charCode;
        ako = String.fromCharCode(event.which);
        jQuery('.a').each(function(){
            var cn = jQuery(this).html();
            if(ako == cn){
                jQuery(this).hide('explode',{},'10000').remove();
            }   
            novalue +=cn;
        });
        //alert(novalue);
        jQuery("#cn").animate({width:'400px',border:'1px solid pink'},'slow');
    });

ПОПРОБУЙТЕ ЭТО ОДИН