入力フィールドの大きなマトリックスとして実装された、大きなHTMLデータ入力テーブルがあります。行方向と列方向のタブ順序を動的に切り替えるJavaScriptベースの機能を実装しようとしています。
私が使用しているアプローチは、IE8では「1回」しか機能しないようです。つまり、JavaScriptを使用してタブインデックスが設定されると、それ以降の変更はすべて無視され、タブの順序はデフォルトの状態に戻ります。
テーブル入力には、次のようなクラス名があります。
.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);
});
なぜこれが期待どおりに機能しないのか、何か考えはありますか?