javascript описание keycode - Как узнать, является ли .keyup () символьным ключом (jQuery)




3 Answers

Примечание. Оглядываясь назад, это был быстрый и грязный ответ и может не работать во всех ситуациях. Чтобы получить надежное решение, см . Ответ Тима Дауна (скопируйте его здесь, поскольку этот ответ все еще получает просмотры и прогнозы):

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

Следующий пример будет работать все время в большинстве браузеров, но есть некоторые крайние случаи, о которых вы должны знать. По моему мнению, окончательное руководство по этому вопросу см. http://unixpapa.com/js/key.html .

$("input").keypress(function(e) {
    if (e.which !== 0) {
        alert("Charcter was typed. It was: " + String.fromCharCode(e.which));
    }
});

keyup и keydown дают вам информацию о физическом нажатии клавиши. На стандартных клавиатурах США / Великобритании в стандартных макетах, похоже, существует корреляция между свойством keyCode этих событий и характером, который они представляют. Однако это ненадежно: разные раскладки клавиатуры будут иметь разные сопоставления.

Ниже был исходный ответ, но он неправильный и может не работать надежно во всех ситуациях.

Чтобы соответствовать коду ключа со словом (например, совпадение совпадения не будет)

$("input").keyup(function(event)
{ 
    var c= String.fromCharCode(event.keyCode);
    var isWordcharacter = c.match(/\w/);
}); 

Хорошо, это был быстрый ответ. Подход один и тот же, но остерегайтесь проблем с кодом, см. Эту article в quirksmode.

on input

Как узнать, является ли .keyup () символьным ключом (jQuery)

$("input").keyup(function() {

if (key is a character) { //such as a b A b c 5 3 2 $ # ^ ! ^ * # ...etc not enter key or shift or Esc or space ...etc
/* Do stuff */
}

});



Это помогло мне:

$("#input").keyup(function(event) {
        //use keyup instead keypress because:
        //- keypress will not work on backspace and delete
        //- keypress is called before the character is added to the textfield (at least in google chrome) 
        var searchText = $.trim($("#input").val());

        var c= String.fromCharCode(event.keyCode);
        var isWordCharacter = c.match(/\w/);
        var isBackspaceOrDelete = (event.keyCode == 8 || event.keyCode == 46);

        // trigger only on word characters, backspace or delete and an entry size of at least 3 characters
        if((isWordCharacter || isBackspaceOrDelete) && searchText.length > 2)
        { ...



Если вам нужно только исключить ключи enter , escape и spacebar , вы можете сделать следующее:

$("#text1").keyup(function(event) {
if (event.keyCode != '13' && event.keyCode != '27' && event.keyCode != '32') {
     alert('test');
   }
});

Смотрите здесь действия.

Вы можете сослаться на полный список кодов клавиш для дальнейшей модификации.




Related