代码之家  ›  专栏  ›  技术社区  ›  Igor Konoplyanko

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

  •  0
  • Igor Konoplyanko  · 技术社区  · 14 年前

    我有一个问题:当我在建议文本框中输入文本时,弹出面板出现。 但当用户将鼠标放在这个弹出面板上并给出建议时,文本框将失去焦点。

    我该怎么做才能避免失去注意力?

    具有相同行为的示例: 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 回复  |  直到 14 年前
        1
  •  1
  •   markovuksanovic    14 年前

    我想这是你的密码?或者这是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);
      }
    
    });
    

    只需更换 要素 使用要附加处理程序的任何对象。

    这对你有帮助吗?

        2
  •  1
  •   Igor Konoplyanko    14 年前

    我发现了问题。我使用了GWT 1.7.0。-它的源代码中有focus()调用。

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

    感谢Markovuksanovic的帮助!