2013-07-15 22 views
0

我有一個GXT 3 TextArea,可以捕獲複製粘貼事件。在這個事件中,我想獲取textarea中的文本。GXT獲得TextArea的值而不會造成焦點損失

問題:textarea仍然有焦點,所以值不更新。因此,getValue()返回空字符串...

我試圖撥打getValue()getCurrentValue()flush()validate()

我也嘗試擴展TextArea以獲得blur()方法並在獲取值之前調用它:它沒有區別。

任何解決方案? (即使GWT組件的解決方案,將不勝感激)。

回答

2

沒有看到你的代碼,很難肯定地說。但是猜測,你正在聽該事件,並立即調用getCurrentValue()(在這種情況下是正確的呼叫)。

這是錯誤的 - 事件處理程序可能會調用preventDefault()來取消該事件對於大多數可發生事件的默認行爲。事件處理程序返回後,瀏覽器纔會真正執行操作(粘貼或繪製按下的鍵)。對此的解決方案是在嘗試閱讀之前等一會兒,等到動作完成後再等。實現此目的的最簡單方法是在事件發生後安排延遲命令,然後讀取字段的值。

//in the event handler of your choice... 
Scheduler.get().scheduleDeferred(new ScheduledCommand() { 
    @Override 
    public void execute() { 
     String pastedValue = field.getCurrentValue(); 
     //do something with the value now 
    } 
}); 
+0

工程就像一個魅力,謝謝:) –

0

之前所獲得的價值,你可以調用

yourTextField.finishEditing();

後,它的方法getValue()應該返回字段的值。如果您希望在獲取該值後保持此字段可以始終致電

yourTexField.focus();

+0

你需要額外的工作,以保持光標的位置至少。請記住,即使仍然模糊,getCurrentValue()將返回正確的值。 –