我有一个大的HTML数据输入表,实现为一个大的输入字段矩阵。我正在尝试实现一个基于JavaScript的功能,该功能可在行方式和列式选项卡顺序之间动态切换。
我正在使用的方法似乎只在IE8中“一次”工作。也就是说,一旦使用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);
});
为什么这不符合预期的任何想法?
答案 0 :(得分:1)
我建议您以不同的方式执行此操作,即在所有条目项上放置Tab键的事件处理程序,然后使用该键的事件来查找行或列中的下一个项目,具体取决于您想要,然后在该输入上调用setFocus()。如果需要,可以对shift + tab执行相反的操作。
这可以避免您的问题并且不能真正回答您的问题,但它也可以消除您对此.col-和.row-命名方案的需要,这可能会导致更容易维护的设计。