Gwt keyPressEvent.getCharCode()为所有特殊键返回0,如enter、tab、escape等
我的代码:Gwt keyPressEvent.getCharCode()为所有特殊键返回0,如enter、tab、escape等,gwt,onkeypress,Gwt,Onkeypress,我的代码: @覆盖 按键时公共无效(按键事件) { if(event.getCharCode()==KeyCodes.KEY\u ENTER) { registerButton.click(); } } 这是附加到一个文本框中的,当我按enter键时它会触发event.getCharCode()只是零,而不是13。当我按tab键时,它是0,当我按escape键时,它是0。啊 这是正常工作昨天,和一些东西已经改变了其他地方的项目,以影响这一点-但我不知道它可能是什么。在最后一天,似乎真的没有做出
@覆盖
按键时公共无效(按键事件)
{
if(event.getCharCode()==KeyCodes.KEY\u ENTER)
{
registerButton.click();
}
}
这是附加到一个文本框中的,当我按enter键时它会触发event.getCharCode()
只是零,而不是13
。当我按tab键时,它是0
,当我按escape键时,它是0
。啊
这是正常工作昨天,和一些东西已经改变了其他地方的项目,以影响这一点-但我不知道它可能是什么。在最后一天,似乎真的没有做出任何相关的改变
相反,如果我处理一个KeyUpEvent
,它将按预期工作
我正在使用GWT2.1.0。谢谢你的建议 按键处理程序例如用于SHIFT、CTRL、ALT键 如果要将事件附加到另一个键,则必须使用
KeyDownHandler
nameField.addKeyDownHandler(新的KeyDownHandler(){
@凌驾
public void onKeyDown(KeyDownEvent事件){
if(event.getNativeKeyCode()==KeyCodes.KEY\u ENTER){
Window.alert(“你好”);
}
}
});
或者您可以试试这个
if(event.getNativeEvent().getKeyCode()==KeyCodes.KEY\u ENTER){
}
我在从2.0.4更新到2.2.1时遇到了同样的问题,因此它似乎与gwt代码有关
部分问题是KeyPressedEvent表示本机(即特定于浏览器的)按键事件。在你就这个问题提交的文件中,有一条评论说:
但是,预计“escape”不会生成按键事件(即和WebKit行为);您必须使用KeyDown或keydup进行这些操作。
不幸的是,Firefox(和Opera)触发的按键事件比其他(IE和WebKit,它们有最合理的实现,W3C即将在DOM 3事件中标准化的一个,AFAICT)要多得多,但在这种情况下,getCharCode()为0,因此您可以安全地忽略它们。一个例外(可能还有其他例外)是“回车”键。
浏览器中的Key/char事件非常混乱,GWT在同质化方面做得不多(至少目前是这样)
在解决这一问题之前,最好使用KeyDownHandler或KeyUpHandler解决方案。它们可能会更改FF上的行为。我正在使用GWT2.4.0和Firefox10。根据这一点,在他们解决问题之前,您应该使用如下内容:
@Override
public void onKeyPress(KeyPressEvent event) {
int keyCode = event.getUnicodeCharCode();
if (keyCode == 0) {
// Probably Firefox
keyCode = event.getNativeEvent().getKeyCode();
}
if (keyCode == KeyCodes.KEY_ENTER) {
// Do something when Enter is pressed.
}
}
应使用KeyUpHandler而不是KeyPresshandler
newSymbolTextBox.addKeyUpHandler(new KeyUpHandler() {
@Override
public void onKeyUp(KeyUpEvent event) {
if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) {
addStock();
}
}
});
GWT 2.5:
public void onKeyPress(KeyPressEvent event) {
if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER) {
// Event
}
}
这部分似乎是正确的,你能添加其余的代码吗?为了解决这个问题,我创建了一个带有Eclipse插件的示例应用程序,并在它创建的文本框中添加了一个按键处理程序。。。同样的问题!我在这里注册了一个bug,谢谢。我使用的是KeyPressEvent,它在IE和Chrome中检测到了正确的“回车”键,但在Firefox中没有检测到(返回“0”)。但是这个解决方案对我有效。是的,KeyPressEvent(没有getNativeKeyCode)在internet explorer和chrome上对我有效,但在firefox上不行[42]。KeyDownHandler和getnativeKeyCode没有必要达到这个程度。但是user2015482的答案在FF中确实有效。这应该是公认的答案!这对我不起作用。我不得不从
KeyPressHandler
切换到KeyDownHandler
(IE和Chrome都很好,但Firefox不是)。尽管被asker选中,但这并不是这个问题最完整、最正确的答案。用户可以使用@Michaël为跨浏览器功能提供的答案,而不是使用此选项。感谢您的写作。这与公认的答案不同吗?这是可行的,而且应该是公认的答案:它在Firefox上也有效。另见。