禁用页面上的输入键,但不在textarea中

422*_*422 10 javascript forms

找到这个脚本:


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

但我们的形式非常复杂,我正在寻找一种更清洁的做事方式.

Nic*_*ver 27

你需要在这里检查nodeNametagName事件目标,如下所示:

if (evt.keyCode == 13 && node.nodeName != "TEXTAREA") { return false; }
Run Code Online (Sandbox Code Playgroud)

我注意到在接受了你已经在使用jQuery之后,你可以用以下代码替换上面的所有代码:

$(document).keypress(function (e) {
  if(e.which == 13 && e.target.nodeName != "TEXTAREA") return false;
});
Run Code Online (Sandbox Code Playgroud)