2012-10-04 61 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; 

我知道這是不是最好的選擇,但這個工作。謝謝大家。