1

我正在解决 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();  
 });

它有效,但看起来很脏。问题是:您能否为该问题提出更好的解决方案?

先感谢您。

4

3 回答 3

5

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

$(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;
});
于 2012-08-28T06:46:49.730 回答
0

这并不脏。但是如果你想要一条线,你仍然可以这样做:

ev.keyCode == 13 && ev.target.type != "textarea" && ev.preventDefault();  
于 2012-08-28T06:31:06.023 回答
0

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

$('#myForm').submit(function(ev){
  // custom form handling code here

  return false;// prevent browser default form submission
});

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

于 2012-08-28T06:48:59.313 回答