Текстовое поле теряет фокус при наведении DIV - PullRequest
0 голосов
/ 22 апреля 2010

У меня проблема: при вводе текста в текстовое поле с предложением появляется всплывающая панель. Но когда пользователь наводит указатель мыши на эту всплывающую панель с предложениями - текстовое поле теряет фокус.

Что я должен сделать, чтобы не потерять фокус?

Пример с таким же поведением: 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);
      }
    }
  }

Понятно, что я не могу исправить потерю фокуса. Теперь вопрос - как сделать при нажатии клавиши Backspace или любую клавишу, чтобы сфокусироваться на окне редактирования?

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 23 апреля 2010

Я нашел проблему.Я использовал GWT 1.7.0.- и в его исходном коде есть вызов focus ().

Эту проблему можно решить, обновив GWT v2.

Спасибо markovuksanovic за помощь!

1 голос
/ 22 апреля 2010

Я думаю, это твой код?Или это фрагмент из источника 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);
  }

});

просто замените элемент на то, к чему вы хотите прикрепить обработчики.

Поможет ли это вам?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...