如何在GWT中将tabindex设置为-1?

如何在GWT中将tabindex设置为-1?,gwt,tabindex,Gwt,Tabindex,GWT有一个问题:我需要从焦点循环中跳过一个按钮,因此我使用button.setTabIndex(-1)将选项卡索引设置为-1,但在生成的html中,我得到了tabindex=“0”。。。这是一个bug吗?似乎不可能有一个负的tabindex 首先,setTabIndex的文档说: 设置小部件在选项卡索引中的位置。如果有多个小部件 具有相同的选项卡索引,每个这样的小部件将在 任意命令。将选项卡索引设置为-1将导致此小部件 将从选项卡顺序中删除 w3c说: 可能接收焦点的元素应由用户代理导航 根据

GWT有一个问题:我需要从焦点循环中跳过一个按钮,因此我使用button.setTabIndex(-1)将选项卡索引设置为-1,但在生成的html中,我得到了tabindex=“0”。。。这是一个bug吗?

似乎不可能有一个负的tabindex

首先,
setTabIndex
的文档说:

设置小部件在选项卡索引中的位置。如果有多个小部件 具有相同的选项卡索引,每个这样的小部件将在 任意命令。将选项卡索引设置为-1将导致此小部件 将从选项卡顺序中删除

w3c说:

可能接收焦点的元素应由用户代理导航 根据以下规则:

  • 首先导航支持tabindex属性并为其指定正值的元素。导航从 索引值最低的元素到索引值最高的元素 价值值不必是连续的,也不必以任何值开头 特别价值。具有相同tabindex值的元素应 按照它们在字符流中出现的顺序进行导航

  • 下一步导航那些不支持tabindex属性或不支持tabindex属性并将其赋值为“0”的元素。这些 元素按其在角色中的显示顺序进行导航 小溪

  • 禁用的元素不参与选项卡顺序

  • 资料来源:

    但如果您想跳过按钮,请尝试将tabindex设置为<-1。 例如:

    Button myButton = new Button("Hello");
    myButton.setTabIndex(-2);
    // "-1" is convert to 0, and the button is not skipped
    
    我尝试
    myButton.setTabIndex(-1)
    myButton.getElement.setAttribute(“tabindex”,“-1”)
    ,在html中总是转换为0


    我希望这能对您有所帮助。

    它看起来像是故意的:
    FocusWidget
    onAttach
    onAttach
    中将选项卡索引设置为-1:

    这种行为可以追溯到3年半以前(在GWT2.1.0中发布):所以我很惊讶你是第一个报告它的人(据我所知),但在我看来它确实像一个bug。

    与jsni合作。 例如:

    public static native void setElementTabIndex(Element b, int ti)/*-{
            b.tabIndex = ti;
         }-*/;
    
    //and call the native js function
    setElementTabIndex(odButton.getElement(), -1);
    

    与setFocus一样,使用延迟:

      Scheduler.get().scheduleDeferred(new Command() {
                @Override
                public void execute() {
                    cb.setTabIndex(-1);
                }
      });
    

    在我的例子中,cb=CheckBox()

    就是这样设置的。那么你能发布一个片段来说明这个问题吗?“似乎不可能有一个负的tabindex”:HTML4不允许它,但浏览器必须处理这个问题,并且;你的其余答案正是问题中最初报告的问题。