Отключить ввод ключа на странице, но НЕ в текстовом поле
Нашел это script:
function stopRKey(evt) {
var evt = (evt) ? evt : ((event) ? event : null);
var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
if ((evt.keyCode == 13) && (node.type=="text")) {return false;}
}
document.onkeypress = stopRKey;
Только проблема, он также останавливает ввод ключа, который используется в textarea. Это хлопот.
Я играл с использованием:
onkeypress="return handleEnter(this, event)"
Но наши формы чрезвычайно сложны, и я ищу более чистый способ делать вещи.
Ответы
Ответ 1
Вам нужно проверить nodeName
или tagName
цели события, например:
if (evt.keyCode == 13 && node.nodeName != "TEXTAREA") { return false; }
Я заметил, что после того, как было принято, что вы уже используете jQuery, вы можете просто заменить весь свой код выше:
$(document).keypress(function (e) {
if(e.which == 13 && e.target.nodeName != "TEXTAREA") return false;
});
Ответ 2
Я думаю, вы можете просто изменить эту строку
if (evt.keyCode == 13 && node.type == "text") {
return false;
}
to
if (evt.keyCode == 13 && node.type != "TEXTAREA") {
return false;
}
Ответ 3
Если вы используете jquery (настоятельно рекомендуется), это автоматически добавит эту функцию, чтобы разрешить использование клавиши ввода:
$("textarea").focus(function () {
$(this).keypress(handleEnter);
});