0

我有一个大型 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);
});

任何想法为什么这不能像我期望的那样工作?

4

1 回答 1

1

我建议您以不同的方式执行此操作,即在所有条目项目上放置一个选项卡键的事件处理程序,然后使用该键的事件来查找行或列中的下一个项目,具体取决于您想要什么,并且然后在该输入上调用 setFocus()。如果需要,您可以对 shift+tab 执行相反的操作。

这避免了您的问题并且并没有真正回答您的问题,但它也可以消除您对这种 .col- 和 .row- 命名方案的需要,这可能会导致更易于维护的设计。

于 2009-11-25T01:38:07.843 回答