2012-07-25 46 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(); 

那麼該事件將被取消冒泡之前逗號添加到文本框的內容。

相關問題