如何在我点击Delete键之前获取最后一个Textbox值?

时间:2012-07-25 10:36:38

标签: gwt

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

1 个答案:

答案 0 :(得分:1)

之后

itemBox.setFocus( setFocus );

使用

防止事件冒泡
event.preventDefault();
event.stopPropagation();

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