2011-11-27 59 views
0

當用戶在TextBox或TextArea中輸入數據時,我想用另一個(例如'B')替換特殊的輸入字符(例如'A')。我的代碼是象下面這樣:
GWT - 觸發本機KeyPressEvent不起作用?

public void onKeyPress(KeyPressEvent event) {  

    if (event.getNativeEvent().getCharCode() == 65 /*for 'A'*/){    
     event.preventDefault(); 
     NativeEvent event1 = 
     Document.get().createKeyPressEvent(false, false, false, false, 66 /* for 'B'*/);       
     DomEvent.fireNativeEvent(event1, theTextBox);  
}   

我覺得應該是OK(根據GWT文檔),但實際上它只是工作,直到event.preventDefault();,其餘似乎忽略。我的意思是它只是刪除'A',但不會'B'。誰能告訴我原因?或任何其他解決方案?
謝謝。

+0

瘋狂的猜測:你有沒有嘗試在'fireNativeEvent'之後移動'preventDefault'? –

+0

@Darthenius你的猜測會導致Firefox崩潰。我改變了嘗試實施編輯器操作的方式。我的意思是在按鍵上,而不是發射新的事件,我得到文本框的值('getValue()'),用新的字符替換輸入的字符並調用'setValue()'。謝謝。 – Hamzeh

回答

0

嘗試從KeyPressHandler切換到KeyDownHandler

public void onKeyDown(KeyDownEvent event) { 
    if(event.getNativeKeyCode() == 65) { 
     //do the character replacement here 
    } 
} 

希望它能幫助你。