我对GWT有这个问题:我需要从焦点循环跳过一个按钮,所以我用button.setTabIndex(-1)将标签索引设置为-1,但是在生成的html中我得到了tabindex =“0” ......这是一个错误吗?
答案 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说:
可能会获得焦点的元素应由用户代理导航 根据以下规则:
首先导航支持tabindex属性并为其指定正值的元素。导航从 具有最低tabindex值的元素到具有最高元素的元素 值。价值观不必是连续的,也不必以任何方式开始 特别的价值。具有相同tabindex值的元素应该 按照它们在字符流中出现的顺序进行导航。
接下来导航那些不支持tabindex属性或支持它并为其赋值“0”的元素。这些 元素按它们在角色中出现的顺序导航 流。
- 醇>
禁用的元素不参与Tab键顺序。
来源: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()