У меня есть следующий код, и я пытаюсь разрешить только 3 цифры 0-9 на входе, но все же позволяю пользователю использовать клавиши со стрелками, backspace и delete.Клавиатура JavaScript Key Code 0 в Firefox
Он работает в других браузерах, но в firefox вывод на консоль показывает клавиши со стрелками и ключ удаления, регистрирующий как код клавиши 0. Что дает?
Код:
$input.
keypress(function(e) {
var currentLength = $input.val().length;
var c = e.which;
console.log("key", c);
//0=48, 9=57, 37-40 = arrow keys 8= backspace, 46=delete
if (c === 8 || c === 46 || (c >= 37 && c <=40)) {
//delete, backspace, and arrow keys are allowed
} else if (c < 48 || c > 57 || currentLength >= 3) {
e.preventDefault();
}
}).on("paste", function(e) {
e.preventDefault();
});
Fiddle: http://jsfiddle.net/2cjpdfcy/
На минорной ноте, событие «вход» будет срабатывать только для ключей, которые изменяют значение входного сигнала, поэтому вам не придется заботиться о клавиш со стрелками. – Taplar
@Taplar Это отличное предложение, но, к сожалению, я все еще поддерживаю IE 8 :(Спасибо, хотя! – thatidiotguy