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

1 回答 1

1

itemBox.setFocus( setFocus );

防止事件冒泡

event.preventDefault();
event.stopPropagation();

因此,在将逗号添加到文本框内容之前,该事件将被取消。

于 2012-07-25T11:45:03.110 回答