防止在IE7中按回车键时出现默认值

prevent default on enter keypress in IE7

本文关键字:默认值 回车 IE7      更新时间:2023-09-26

我正在解决IE7中默认提交按钮的问题。当我按下输入栏中的"输入"键时,页面上的一些按钮就会被点击。所以我找到了解决方案:

 $(document).bind("keypress", function(ev) {
     ev.keyCode == 13 && ev.preventDefault();  
 });

但这个代码有一个问题:textarea标签没有得到"新行"。所以我尝试了这个:

 $(document).bind("keypress", function(ev) {
     if (ev.keyCode == 13 && ev.target.type != "textarea")
         ev.preventDefault();  
 });

它有效,但看起来很脏。问题是:你能为这个问题提出更好的解决方案吗?

提前谢谢。

如果只是为了防止在回车键上提交表单,请在表单尝试提交时在按键上进行测试。。。

$(your_form).submit(function(ev){
    if (ev.keyCode == 13){
        // Prevent form submission behaviors if the event was fired by enter keypress
        ev.preventDefault();return false;
    }
    // And code for form submission here, or just keep the return true to make it behave normally.
    return true;
});

这不是脏的。但如果你想要一条线,你仍然可以使用:

ev.keyCode == 13 && ev.target.type != "textarea" && ev.preventDefault();  

一个更优雅的解决方案是使用jQuery的提交处理程序并返回false:

$('#myForm').submit(function(ev){
  // custom form handling code here
  return false;// prevent browser default form submission
});

或者,您也可以对事件对象调用.preventDefault(),并将其传递给提交处理程序。