itemBox.addKeyUpHandler( new KeyUpHandler()
{
public void onKeyUp( KeyUpEvent event )
{
String currentValue = itemBox.getValue().trim();
// handle backspace
if( event.getNativeKeyCode() == KeyCodes.KEY_BACKSPACE )
{
if( "".equals( currentValue ) )
{
doTheJob( );
}
}
}
} );
期待行为: 当文本框为空时,我点击删除,将运行doTheJob();
目前的行为: 当有一个字符时,我点击删除,它会触发doTheJob();
换句话说,在我点击删除键之前,有什么方法可以获得文本框内容吗? 我试图使用var来保存最后一个值,但是它需要注册另一个监听器并且impl不是那么有效。
感谢您的意见。
////////////////////编辑//////////////////////
使用KeyDownHandler确实解决了上述问题,但导致了另一个问题: 我使用itemBox.setValue(“”);清除文本框但它总是有一个逗号。
itemBox.addKeyDownHandler( new KeyDownHandler()
{
public void onKeyDown( KeyDownEvent event )
{
// handle backspace
if( event.getNativeKeyCode() == KeyCodes.KEY_BACKSPACE )
{
String currentValue = itemBox.getValue().trim();
if( "".equals( currentValue ) )
{
doTheJob();
}
}
// handle comma
else if( event.getNativeKeyCode() == 188 )
{
doOtherJob();
//clear TextBox for new input
itemBox.setValue( "" );
itemBox.setFocus( setFocus );
}
}
} );
答案 0 :(得分:1)
之后
itemBox.setFocus( setFocus );
使用
防止事件冒泡event.preventDefault();
event.stopPropagation();
因此,在将逗号添加到文本框内容之前,该事件将被取消。