Я испортил поведение при работе с Firefox, поскольку нажатие клавиши ввода (действительно, любой клавиши) без фокусировки на конкретном поле НЕ запускает событие keydown, оно вызовет только событие нажатия клавиши.
Это может быть очень запутанным, так как в keydown и keyup event используются коды кода JavaScript, тогда как keypress использует коды ASCII. К счастью, 13 (ввод/возврат) является общим для обоих.
Есть ли какая-нибудь известная причина, почему FF использует keypress в этом обстоятельстве? Какая польза?
Как только это было установлено, IE8 бросил глупость в том, что он не позволяет запретить требовать от Default вместо returnValue = false
следующий фрагмент из другого сообщения SO оказался очень полезным:
event.preventDefault ? event.preventDefault() : event.returnValue = false;
Во время поиска для решения этих проблем меня постоянно путают event.keycode
vs event.which
. А именно, я делаю неправильно, используя оператор switch, аналогичный:
$("#class_Name").bind("keydown", function(event){
// do not test input if field controls used
switch(event.which){
case 13:
//enter key
event.preventDefault ? event.preventDefault() : event.returnValue = false;
break;
}
Является ли следующее лучше, если да, то почему?
$("body").keypress(function(event){
// stop inadvertant form submission
if (event.keycode == "13"){
event.preventDefault ? event.preventDefault() : event.returnValue = false;
}
});
Я просто хотел бы знать, чтобы я знал, что лучше всего применять.
Большое спасибо.