2011-11-09 24 views
1

我有代碼打擊通過2個字段,它在IE和Chrome中沒有效果,它似乎什麼都不運行(例如,當我放警報),並在Firefox中它與一些bug運行(它跳躍有兩次),你在哪裏認爲問題是,我被ASP.Net和jQuery 1.3.2版本jQuery的焦點()或按鍵()不工作在IE和Chrome

$(document).ready(function() { 
    $("#TextBox1").keypress(function (e) { 
     var kCode = e.keyCode || e.charCode; 
     if (kCode == 9) { 
      $("#TextBox2").focus(); 
     } 
    }); 
}); 
+1

不要浪費你的時間手動做這項工作!利用'tabindex'屬性。 –

回答

4

我認爲主要的問題是您正在使用keypress事件,該事件只能在向輸入添加字符時觸發,而不是在按下任何鍵(如TAB)時觸發。您需要使用​​。但是,在你的小提琴上測試它似乎仍然不起作用。爲了使它工作(在Chrome中至少),我不得不防的默認操作:

$(document).ready(function() { 
    $("#TextBox1").keydown(function (e) { 
     e.preventDefault(); 
     var kCode = e.keyCode || e.charCode; 
     console.log(kCode); 
     if (kCode == 9) { 
      $("#TextBox2").focus(); 
     } 
    }); 
}); 

這裏是一個update fiddle。但是,如果我已經正確理解了您的問題,那麼您所要做的就是在按Tab鍵時更改焦點元素......如果這是正確的,爲什麼不使用tabindex屬性呢?

2

發展中如果這是ASP.NET,則需要由ClientID參考對照:

$(document).ready(function() { 
    $("#<%=TextBox1.ClientID%>").keypress(function (e) { 
     var kCode = e.keyCode || e.charCode; 
     if (kCode == 9) { 
      $("#<%=TextBox2.ClientID%>").focus(); 
     } 
    }); 
}); 
+1

好點,但可能是一個紅色的鯡魚。它在FireFox中工作,所以選擇器是正確的。這是由於瀏覽器處理不同關鍵事件的差異。 Firefox提供了一個tab鍵的按鍵事件,而其他瀏覽器則不會。 – gilly3

+0

是的,我認爲這也有點奇怪。奇怪的是,雖然沒有'INamingContainers'(假設'ClientIDMode'沒有被設置爲靜態的)。 –

3

keypress事件不會觸發標籤(鍵碼9)。您需要使用keyup或​​。

相關問題