2009-07-18 54 views
3

我試圖控制我的表單,以及用戶如何通過表單元素'tabindex屬性與它們交互。我所有的元素都有tabindex指定,我希望這個值得到尊重和正確使用。使用jQuery來規避tabindex問題

我目前正在Mac/Firefox上開發,並且我知道默認的Mac系統設置,它將製表符切換設置爲僅輸入元素和列表。但是,我想覆蓋此任何其他設置,可能會阻礙任何系統/瀏覽器的這種方式。

我正在使用jQuery來試圖解決這個問題。這裏是我的代碼在這一點上:

$(":input").keypress(function(e){ 
    if (e.which == 0) 
    { 
     tindex = parseInt($(this).attr("tabindex")) + 1; 
     $(":input[tabindex='" + tindex + "']").focus(); 
    } 
}); 

但是,這不是我想要的方式工作。當啓用默認的Mac設置時,這實際上會跳過tabindex,並且完全跳過非text/textarea項目。例如,如果我在input[tabindex=2]上,然後按「Tab」鍵,我將發送到input[tabindex=4]。如果我在input[tabindex=2]之間框input[tabindex=2]input[tabindex=4]之間,我發送到input[tabindex=5]

我要input[tabindex=2]發送給我input[tabindex=3]select[tabindex=3],input[type=radio][tabindex=3]等;基本上任何有tabindex 3.

讓我知道任何想法來規避這個問題。另外請告訴我,如果你知道我應該關注的任何其他系統/瀏覽器上的其他內容。

+0

它是否適用於選擇框? – cometta 2010-09-15 02:48:51

回答

4

e.preventDefault();添加到您的按鍵事件處理程序。這將停止瀏覽器對此事件執行其默認操作。如果瀏覽器置於點擊處理程序中,這也會停止瀏覽器的鏈接。

請參閱documentation

+0

謝謝,工作完美! – 2009-07-18 18:06:22