代码之家  ›  专栏  ›  技术社区  ›  harto

在IE8中不能多次设置tabIndex

  •  0
  • harto  · 技术社区  · 15 年前

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

    你知道为什么它不能像我期望的那样工作吗?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Jarrett Widman    15 年前

    我建议您采用另一种方法,即在所有条目项上放置tab键的事件处理程序,然后根据需要使用该键的事件来查找行或列中的下一项,然后对该输入调用setFocus()。如果需要,可以对shift+tab执行相反的操作。

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