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

时间:2013-05-25 11:41:30

标签: gwt tabindex

我对GWT有这个问题:我需要从焦点循环跳过一个按钮,所以我用button.setTabIndex(-1)将标签索引设置为-1,但是在生成的html中我得到了tabindex =“0” ......这是一个错误吗?

4 个答案:

答案 0 :(得分:3)

看起来它是有目的的:FocusWidget的{​​{1}}将{1}}中的标签索引重置为0,当它设置为-1时:https://gwt.googlesource.com/gwt/+/2.5.1/user/src/com/google/gwt/user/client/ui/FocusWidget.java

这种行为可以追溯到3年半前(在GWT 2.1.0中发布):https://code.google.com/p/google-web-toolkit/source/detail?r=7642所以我很惊讶你是第一个报告它(我知道),但它确实看起来像给我一个错误。

答案 1 :(得分:2)

似乎不可能有负的tabindex。

首先,setTabIndex的文件说:

  

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

并且w3c说:

  

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

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

  2.   
  3. 接下来导航那些不支持tabindex属性或支持它并为其赋值“0”的元素。这些   元素按它们在角色中出现的顺序导航   流。

  4.   
  5. 禁用的元素不参与Tab键顺序。

  6.   

来源:http://www.w3.org/TR/1999/REC-html401-19991224/interact/forms.html#adef-tabindex

但是如果要滑动按钮,请尝试设置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。

我希望能帮到你。

答案 2 :(得分:0)

使用jsni。 例如:

public static native void setElementTabIndex(Element b, int ti)/*-{
        b.tabIndex = ti;
     }-*/;

//and call the native js function
setElementTabIndex(odButton.getElement(), -1);

答案 3 :(得分:0)

与setFocus一样,使用deferred:

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

在我的情况下cb = CheckBox()