防止在IE7中输入按键的默认值

时间:2012-08-28 06:28:53

标签: javascript jquery

我正在使用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();  
 });

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

提前谢谢。

3 个答案:

答案 0 :(得分: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;
});

答案 1 :(得分:0)

这不脏。但是如果你想要一行,你仍然可以:

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

答案 2 :(得分:0)

更优雅的解决方案是使用jQuery's submit handler并返回false:

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

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

或者,您也可以在事件对象上调用.preventDefault(),并传入提交处理程序。