2012-10-04 48 views
1

有一些问题,跨浏览器。我需要支持IE7-9,我的网站设置为IE7标准 - 无法更改。然后我需要支持最新的Chrome浏览器,safari和firefox。防止表单提交,打keyup事件处理程序不工作

我想在输入文本框击中keyup事件。问题是我有一个按键事件添加到该页面上提交表单,我不想发生的形式。 示例应用程序会是这样的。

JAVASCRIPT:

$(document).ready(function() { 

     $("form").bind("keypress", function (e) { 
      var code = (e.keyCode ? e.keyCode : e.which); 
      if (code == 13) { 
       $("#log1").append("Key press - Form event"); 
      }     
     }); 

     $("#myInput1").bind("keypress", function (e) { 
      var code = (e.keyCode ? e.keyCode : e.which); 
      if (code != 13) { 
       return true; 
      } 

      $("#log2").append("Enter pressed - input event"); 

      //if (!e) var e = window.event; 

      e.cancelBubble = true; 
      e.returnValue = false; 

      if (e.stopPropagation) { 
       e.stopPropagation(); 
       //e.preventDefault(); 
      } 

     }); 

     $("#myInput1").bind("keyup", function (e) { 
      var code = (e.keyCode ? e.keyCode : e.which); 
      if (code != 13) { 
       return true; 
      } 

      $("#log1").append("Key up - Enter pressed - input event"); 
     }); 


    });​ 

HTML

<li onkeypress="alert('hi')"> 
      <input id="myInput1" type="text" /> 
      <div id="log1"></div> 
      <div id="log2"></div> 
     </li> 

如果我使用e.preventDefault() - keyup事件不打,如果我不使用它,页面回发。

我想看看“键向上 - 输入压 - 输入事件”被写入到屏上按回车,在所有浏览器。

任何帮助,将不胜感激。谢谢。

+0

这是麻烦'如果变种E = window.event(E!);' – elclanrs

+0

@elclanrs我可以删除,没有任何问题,我认为该行代码将永远不会被击中。 –

+0

你尝试$( '形式')上( '提交',函数(){返回false;})。 –

回答

1

终于能够做到这一点是这样的:

$(document).ready(function() { 
     $("form").bind("keypress", function (e) { 
     var code = (e.keyCode ? e.keyCode : e.which); 
     if (code == 13) { 
      $("#log1").append("Key press - Form event"); 
     }     
    }); 


     $("#myInput1").bind("keypress", function (e) { 
      var code = (e.keyCode ? e.keyCode : e.which); 
      if (e.keyCode != 13) { 
       return true; 
      } 

      $("#log2").append("Enter pressed - input event"); 


      e.stopPropagation(); 
      sampleE = e.keyCode; 
      $("#myInput1").trigger("keyup"); 
      return false; 
     }); 

     $("#myInput1").bind("keyup", function (e) { 
      if (!e.keyCode) 
       e.keyCode = sampleE; 
      if (e.keyCode != 13) { 
       return true; 
      } 

      $("#log1").append("Key up - Enter pressed - input event"); 
     }); 


    }); 
    var sampleE = null; 

我知道这是不是最好的选择,但这个工作。谢谢大家。