2010-05-24 120 views
5

我正在使用Telerik控件,特別是數值文本框,您可以在其中設置上下箭頭以在文本框中遞增/遞減值。我需要設置標籤順序移動到下一個字段,但由於上下箭頭上有一個按鈕,瀏覽器將先通過這些按鈕,然後移動到下一個文本框字段。如何在jQuery中設置Tab鍵順序

如何設置jquery檢測下一個可見的文本框/下拉菜單/等輸入字段,並移動到按下Tab鍵而不是通過附近的按鈕運行?

回答

4

實際上,您可以使用HTML屬性tabindex對頁面上的所有輸入按數字順序升序進行設置。因此,跳過這些按鈕,從頁面上的第一個輸入開始分配tabindex=1,第二個輸入tabindex=2,相應地設置後續輸入。當你到達你想要跳過的按鈕時,不要給它們一個tabindex值,或者在列表的末尾給它們索引。

+4

不需要。找出標籤順序是一個工作的地獄,最好留給大衣。此外,如果您不指定標籤索引,它將自動獲取一個值。要真正抑制Tab鍵順序的元素,請爲其指定一個減號爲1的Tab鍵索引。要爲Tab鍵順序啓用一個元素,並讓瀏覽器決定最佳索引,請爲其選項卡索引爲零。 – 2012-09-27 13:03:28

17
$(function() { 
    var tabindex = 1; 
    $('input,select').each(function() { 
    if (this.type != "hidden") { 
     var $input = $(this); 
     $input.attr("tabindex", tabindex); 
     tabindex++; 
    } 
    }); 
}); 
+0

+1清潔解決方案 – diEcho 2012-08-17 09:38:33

2

你也可以試試這個

$('input,select :visible').each(function (i) { $(this).attr('tabindex', i + 1); }); 
1

有時,當你正在生成的jQuery代碼或重新排序元素的解決辦法是不使用的TabOrder但只是確保你把元素在DOM中正確的順序。看下面的例子。

JQuery code:: 
var anchorB = jQuery('#anchorB'); 
jQuery('#divB').remove(); 
anchorB.insertBefore("#anchorC"); 


Before:: 
<a id="anchorB" href="#">Anchor B</a> 
<a id="anchorA" href="#">Anchor A</a> 
<a id="anchorC" href="#">Anchor C</a> 

After:: 
<a id="anchorA" href="#">Anchor A</a> 
<a id="anchorB" href="#">Anchor B</a> 
<a id="anchorC" href="#">Anchor C</a>