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