2012-03-22 8 views
1

У меня есть TextBox, который используется для поиска товаров в моем приложении. Этот TextBox должен выполнять поиск по ключевому слову пользователя по ключевым словам до TextBox или когда пользователь нажимает ENTER.GWT TextBox обработчик изменения значения

, чтобы иметь возможность пояснить далее, этот TextBox работал как окно поиска Google's, в котором результаты поиска просматриваются мгновенно после ввода пользователем.

Я пробовал ValueChangeHandler, но событие будет снято, только если TextBox теряет фокус. Я также попробовал KeyPressEventHandler, но я хочу только запустить событие поиска после ввода ключевого слова пользователю, а не при каждом нажатии клавиши. может ли кто-нибудь дать мне представление о том, как это сделать?

Я думал об использовании GWTTimer, чтобы запустить событие поиска через определенное время. таймер будет работать только в том случае, если пользователь больше не будет вводить ключи в TextBox, но как я узнаю, если нет KeyPressEvent?

+0

Считаете ли вы использование Рекомендованного предложения GWT? вам нужно будет изменить его, чтобы он соответствовал вашим потребностям, но он ближе к тому, что вы описываете, чем TextBox – kroiz

ответ

0

Используйте KeyPressEventHandler или KeyUpEventHandler и проверьте, равен ли последний типизированный символ пробелу. Я думаю, вы можете получить ключ, который вызвал событие, из объекта события. В противном случае используйте метод getText() TextBox. Обновляйте результаты поиска только при обнаружении пробелов или ENTER. Я знаю, что doen't решить эту проблему, если пользователь перестает печатать после слова :-)

2

Это работает для меня:

@UiHandler("searchBox") 
public void onKeyUpEvent(KeyUpEvent keyPress) { 
    // do the search 
} 

Вам нужно KeyUpEvent, KeyPressEventHandler всегда будет поздно ...

0

Я проверил код обработчика нажатой клавиши и в зависимости от этого выполнял какое-либо действие.

searchQueryTextBox.addKeyUpHandler(new KeyUpHandler() { 
     @Override 
     public void onKeyUp(KeyUpEvent event) { 
      if (event.getNativeKeyCode() == 13 || event.getNativeKeyCode() == 32) { 
       //run a search. code 13 - key "Enter", code 32 - key "Space" 
      } 
     } 
    }); 
+0

, который будет искать только при нажатии кнопки ввода, @july хочет google мгновенного поиска. далее, решение одинаков. – koma

+0

Я понял, что @july хочет начать поиск, только когда слово заполнено, а не после каждого нажатия клавиши. Или когда вы нажимаете enter –

Смежные вопросы