отключить ввод ключа на странице, но НЕ в текстовой области - PullRequest
10 голосов
/ 19 ноября 2010

Нашел этот скрипт:


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)"

Но наши формы чрезвычайно сложны, и я ищу более чистый способ ведения дел.

Ответы [ 3 ]

26 голосов
/ 19 ноября 2010

Здесь необходимо проверить 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 голосов
/ 19 ноября 2010

Я думаю, вы можете просто изменить эту строку

if (evt.keyCode == 13 && node.type == "text") {
  return false;
}

до

if (evt.keyCode == 13 && node.type != "TEXTAREA") {
  return false;
}
0 голосов
/ 19 ноября 2010

Если вы используете jquery (настоятельно рекомендуется), тогда автоматически добавится функция, позволяющая использовать клавишу ввода:

$("textarea").focus(function () { 
     $(this).keypress(handleEnter);
}); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...