我有TextBox
,用于在我的应用中搜索产品。这个TextBox
应该在用户关键字TextBox
或用户点击ENTER
后进行搜索。
为了能够进一步解释,此TextBox
的工作方式类似于Google's
搜索框,其中在用户输入后立即查看搜索结果。
我尝试了ValueChangeHandler
,但只有在TextBox
失去焦点时才会触发事件。我也尝试了KeyPressEventHandler
但我想只在用户键入关键字后触发搜索事件,而不是每次按键时触发。任何人都可以告诉我如何做到这一点?
我在考虑使用GWT
Timer
在一段时间后触发搜索事件。只有当用户不再使用TextBox
的键入键时,计时器才会运行,但我怎么知道是否没有KeyPressEvent
被解雇?
答案 0 :(得分:2)
这对我有用:
@UiHandler("searchBox")
public void onKeyUpEvent(KeyUpEvent keyPress) {
// do the search
}
你需要KeyUpEvent,KeyPressEventHandler总是迟到......
答案 1 :(得分:0)
使用KeyPressEventHandler或KeyUpEventHandler并检查最后输入的字符是否等于空格。我想你可以从事件对象接收触发事件的键。否则使用TextBox的getText()方法。仅在检测到空格或ENTER时更新搜索结果。我知道如果用户在单词后面停止输入,则无法解决问题: - )
答案 2 :(得分: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"
}
}
});