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

时间:2010-11-19 01:54:19

标签: 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)"

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

3 个答案:

答案 0 :(得分:26)

您需要在此处查看事件目标的nodeNametagName,如下所示:

if (evt.keyCode == 13 && node.nodeName != "TEXTAREA") { return false; }

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

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

答案 1 :(得分:2)

我认为你可以改变这一行

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

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

答案 2 :(得分:0)

如果你使用jquery(强烈推荐),那么这将自动添加允许使用回车键的功能:

$("textarea").focus(function () { 
     $(this).keypress(handleEnter);
});