找到这个脚本:
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)"
但我们的形式非常复杂,我正在寻找一种更清洁的做事方式。
答案 0 :(得分:26)
您需要在此处查看事件目标的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;
});
答案 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);
});