Интересно, что я делаю не так
$(".s").keypress(function(e) {
switch (e.keyCode) {
case 8: // Backspace
//console.log('backspace');
case 9: // Tab
case 13: // Enter
case 37: // Left
case 38: // Up
case 39: // Right
case 40: // Down
break;
default:
doSearch();
}
});
Я хочу, чтобы моя doSearch()
функция также запускалась при Backspaceнажатии клавиши. На данный момент абсолютно ничего не происходит, когда я нажимаю Backspaceв Chrome и Safari.
Любые идеи?
Ответы:
Используйте
keyup
вместоkeypress
. Это получает все коды клавиш, когда пользователь что-то нажимаетисточник
keyup
стрелять по Backspace, когдаkeypress
не будет?keypress
дляEnter
ключа,keydown
дляBackspace
и так далее; в противном случае вы обнаружите, что ваши события в некоторых браузерах работают не так, как вы ожидаете, особенно если вы хотите запретить поведение ключа по умолчанию. Когда вы используете не тот, что произойдет, либо ваше событие вообще не будет записано (как в случае с Backspace), либо вы не сможете предотвратить это; поскольку это уже происходит до того, как ваш код обработки событий попадет к нему.keyup
будет сломать цифровую клавиатуру . Знаете ли вы ответ, который позволяет правильно определить любую клавишу на полноценной клавиатуре?keydown
лучший вариант для всех ключейЯ сам с этим сталкивался. Я использовал,
.on
так что это выглядит немного по-другому, но я сделал это:Добавление моей работы здесь. Мне нужно было удалить ssn, набранный пользователем, поэтому я сделал это в jQuery
источник
Если вы хотите инициировать событие только при изменениях ввода, используйте:
источник
input
также не соблюдает keyCodes. Это тоже не сработает.Согласно документации jQuery для .keypress (), он не перехватывает непечатаемые символы, поэтому backspace не будет работать при нажатии клавиш, но он попадает в keydown и keyup:
В некоторых случаях keyup нежелателен или имеет другие нежелательные эффекты, и keydown достаточно, поэтому одним из способов справиться с этим является использование
keydown
нажатие клавиш нажатия клавиш для перехвата всех нажатий клавиш, затем установить тайм-аут на короткий интервал, чтобы ввести ключ, затем выполнить обработку в там после.источник