2012-07-25 48 views
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); 
       } 
      } 
     }); 
+0

你用'onKeyDown'事件试过了吗? – 2012-07-25 10:38:33

+0

你是什么意思你点击删除?那是一个按钮?因为你正在为文本框设置一个键处理程序,它将“doTheJob()”...如果命中删除是一个按钮操作,那么从文本框中删除处理程序并将其添加到按钮onClickHandler()并检查文本框是否为空。 textBox.isEmpty()。 – 2012-07-25 10:48:06

+0

对不起,混乱,删除是“Del”键盘键,我已经在标题中说过。 – Mike 2012-07-25 11:18:17

回答

1

itemBox.setFocus(setFocus); 

后防止事件与

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

那么该事件将被取消冒泡之前逗号添加到文本框的内容。

相关问题