【问题标题】:GWT TextBox value change handlerGWT TextBox 值更改处理程序
【发布时间】:2012-03-23 16:18:13
【问题描述】:

我有一个TextBox,用于在我的应用中搜索产品。这个TextBox 应该在用户输入关键字到TextBox 或当用户点击ENTER 时进行搜索。

为了能够进一步解释,这个TextBox 的作用类似于Google's 搜索框,其中搜索结果在用户输入后立即查看。

我已经尝试过ValueChangeHandler,但只有在TextBox 失去焦点时才会触发该事件。我也尝试过KeyPressEventHandler,但我只想在用户输入关键字后触发搜索事件,而不是在每次按键时触发。谁能告诉我如何做到这一点?

我正在考虑使用 GWT Timer 在一段时间后触发搜索事件。只有当用户不再键入 TextBox 的键时,计时器才会运行,但我怎么知道是否没有触发 KeyPressEvent

【问题讨论】:

  • 您考虑过使用 GWT 的 SuggestBox 吗?您将不得不对其进行修改以满足您的需求,但它比 TextBox 更接近您所描述的内容

标签: gwt textbox


【解决方案1】:

这对我有用:

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

你需要KeyUpEvent,KeyPressEventHandler总会迟到……

【讨论】:

    【解决方案2】:

    使用 KeyPressEventHandler 或 KeyUpEventHandler 并检查最后输入的字符是否等于空格。我认为您可以从事件对象接收触发事件的密钥。否则使用 TextBox 的 getText() 方法。仅在检测到空格或 ENTER 时才更新搜索结果。我知道如果用户在一个单词后停止输入,这并不能解决问题:-)

    【讨论】:

      【解决方案3】:

      我检查了按下按键的处理程序代码,并根据它执行一些操作。

      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"
                  } 
              }
          });
      

      【讨论】:

      • 只有在你按下回车时才会搜索,@july 想要谷歌即时搜索行为。此外,解决方案是相同的。
      • 我意识到@july 只想在单词满时才开始搜索,而不是在每次按键后开始搜索。或者当你按下回车键时
      猜你喜欢
      • 2012-10-20
      • 1970-01-01
      • 2011-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-19
      相关资源
      最近更新 更多