2011-10-06 415 views
1

我使用ASP.NET MVC 3 unobstrusive阿賈克斯,我想,以防止進入提交表單。我寫了下面的代碼來做到這一點Ajax.BeginForm +防止提交進入

$(window).keypress(function (event) { 
    if (event.which == 13) { 
     event.preventDefault(); 
    } 
}); 

不幸的是,這個事件沒有在IE8上觸發。有沒有其他的選擇。 (我使用jQuery 1.6.4)

回答

2

你應該在DOM

焦點設置下一個元素
$(window).keypress(function (event) { 
    if (event.which == 13) { 
     $(this).next().focus(); 
    } 
}); 

檢查下一個元素類型,如果類型不是一個textarea(進入許可),或按鈕/提交(輸入=點擊),然後我們只是選擇下一件事。

例如,

if (e.which == 13) { 
     var $targ = $(e.target); 

     if (!$targ.is("textarea") && !$targ.is(":button,:submit")) { 
      var focusNext = false; 
      $(this).find(":input:visible:not([disabled],[readonly]), a").each(function(){ 
       if (this === e.target) { 
        focusNext = true; 
       } 
       else if (focusNext){ 
        $(this).focus(); 
        return false; 
       } 
      }); 

      return false; 
     } 
    } 
+0

的主要問題是,這個事件是不是在IE8觸發。在IE9中,它工作正常。 –

+0

嘗試e.keyCode代替e.which在IE中。你也想在IE中使用keydown()而不是keypress()。看看這個http://unixpapa.com/js/key.html – Priyank

+0

@Priyank - 很好的附加評論:P – Tommy

0

編輯:哦,只是重讀你的問題 - 在IE中,你可能想要的目標$(window).keydown(function(event)代替按鍵

我想在IE中,你必須看event.keyCode屬性

$(window).keypress(function (event) { 
if(event && event.which){ //if which property of event object is supported (NN4) 
characterCode = event.which //character code is contained in NN4's which property 
} 
else{ 
characterCode = event.keyCode //character code is contained in IE's keyCode property 
} 

if (characterCode == 13){ 
    event.preventDefault(); 
} 
0

檢查this確保您按鍵或關鍵甚至會在您的瀏覽器中找到。如果您不希望該事件返回任何東西,後來乾脆return false;