2009-11-25 17 views
0

我有一個大的HTML數據錄入表,輸入字段的大型矩陣來實現。我試圖實現一個基於JavaScript的功能,逐行和逐列選項卡順序之間動態切換。無法設置的tabIndex不止一次在IE8

的方法我用似乎只能在IE8工作「曾經」。也就是說,一旦標籤索引已經使用JavaScript設置,任何後續的更改都被忽略 - 和Tab鍵排序恢復到默認狀態。

表輸入有類名像這樣:

.row-0 .col-0 | .row-0 .col-1 | .row-0 .col-2 | ... 
--------------+---------------+---------------+---- 
.row-1 .col-0 | .row-1 .col-1 | .row-1 .col-2 | ... 

我的JavaScript看起來像這樣:

nCols = ...; 
nRows = ...; 

function setTabOrder(byCol) { 
    var max = byCol ? nCols : nRows; 
    var selector = byCol ? '.col-' : '.row-'; 
    var tabIndex = 1; 
    for (var i = 0; i < max; i++) { 
     $(selector + i).each(function() { 
      this.tabIndex = tabIndex++; 
      //this.value = this.tabIndex; 
     }); 
    } 
} 

事實上,看來我只能通過列選項卡,如果我調用setTabOrder(true);頁面加載時,即:

$(function() { 
    setTabOrder(true); 
}); 

任何想法,爲什麼這不工作,因爲我期望它?

回答

1

我建議你這樣做了不同的方式,這是放了tab鍵的事件處理程序上的所有輸入項,然後使用該密鑰的事件,查找的行或列中的下一個項目,取決於什麼你想要的,然後在該輸入上調用setFocus()。如果你願意,你可以做相反的shift + tab。

這樣可以避免您的問題,並且不會真正回答您的問題,但它也可以消除您需要的.col-和.row-命名方案,這可能會導致維護設計更容易。

+0

好吧,行號和列號是與表的其餘部分一起動態生成的,所以保持這一點不成問題。但是,這看起來像一個有效的解決方案,如果沒有辦法實現我想要做的,我會考慮的。 – harto 2009-11-25 04:26:07