当DIV悬停时,文本框失去焦点

时间:2010-04-22 14:13:08

标签: javascript events gwt

我遇到问题:当我在建议文本框中输入文本时,会出现弹出式面板。 但是当用户将鼠标悬停在此弹出式面板上并提出建议时 - 文本框失去焦点。

我应该怎么做以防止失去焦点?

具有相同行为的示例:http://demo.raibledesigns.com/gwt-autocomplete/

感谢您的帮助。

更新1

正在显示的

SuggestionMenu正在扩展MenuBar,为所有菜单项设置焦点。

void itemOver(MenuItem item, boolean focus) {
    if (item == null) {
      // Don't clear selection if the currently selected item's menu is showing.
      if ((selectedItem != null)
          && (shownChildMenu == selectedItem.getSubMenu())) {
        return;
      }
    }

    // Style the item selected when the mouse enters.
    selectItem(item);
    if (focus) {
      focus();
    }

    // If child menus are being shown, or this menu is itself
    // a child menu, automatically show an item's child menu
    // when the mouse enters.
    if (item != null) {
      if ((shownChildMenu != null) || (parentMenu != null) || autoOpen) {
        doItemAction(item, false);
      }
    }
  }

很明显,我无法解决失去焦点的问题。现在的问题是 - 如何按下退格键或任何键来关注编辑框?

提前致谢

2 个答案:

答案 0 :(得分:1)

我猜这是你的代码?或者这是gwt来源的片段?

我的猜测是这是你的自定义代码......在这种情况下你不应该将元素集中在它的样式上,而是附加一个处理程序......就像

public HandlerRegistration addMouseOutHandler(MouseOutHandler handler) {
  return this.addDomHandler(handler, MouseOutEvent.getType());
}
public HandlerRegistration addMouseOverHandler(MouseOverHandler handler) {
  return this.addDomHandler(handler, MouseOverEvent.getType());
}


element.addMouseOutHandler(new MouseOutHandler() {
  public void onMouseOut(MouseOutEvent event) {
    element.removeStyleName(HEADER_STYLE_HOVERING);
  }
});

element.addMouseOverHandler(new MouseOverHandler() {
  public void onMouseOver(MouseOverEvent event) {
    element.addStyleName(HEADER_STYLE_HOVERING);
  }

});

只需将元素替换为您要将处理程序附加到的任何内容。

这对你有帮助吗?

答案 1 :(得分:1)

我发现了问题。我使用过GWT 1.7.0。 - 它的焦点()调用它的源代码。

这个问题可以通过更新到GWT v2来解决。

感谢markovuksanovic的帮助!