更正答案
您可以輕鬆地聽,當文本字段集中發生的鍵盤事件。
只需將一個KEY_DOWN事件直接添加到文本字段,然後做任何你想要的。
// get key presses only when the textfield is being edited
inputText.addEventListener(KeyboardEvent.KEY_DOWN,handler);
function handler(event:KeyboardEvent){
// if the key is ENTER
if(event.charCode == 13){
// your code here
doSomething();
}
}
在一個單獨的說明,文本框也發送其他有用的事件:
- 當用戶修改(如果它的輸入文本字段) - Event.CHANGE
- 當文本由輸入用戶(如果它的輸入文本框) - TextEvent.TEXT_INPUT
- 當單擊鏈接(如果它的HTML文本) - TextEvent.LINK
- 當用戶滾動時(如果它的多行和內容不' t fi T) - Event.SCROLL
上一個錯誤答案:
我認爲,真正做你想做什麼的唯一方式是有點複雜。
基本上,您不能從常規TextField中獲取任何事件,當按下Enter鍵時會觸發該事件。你必須做的工作...
一個想法是聽文本字段焦點事件。當它具有焦點時,您將一個監聽器添加到鍵盤事件的舞臺上,並檢查按下的按鍵是否爲Enter,如果是,則觸發您的操作,否則跳過。
示例代碼:
inputText.addEventListener(FocusEvent.FOCUS_IN,textInputHandler);
inputText.addEventListener(FocusEvent.FOCUS_OUT,textInputHandlerOut);
function textInputHandler(event:FocusEvent):void {
//our textfield has focus, we want to listen for keyboard events.
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
}
function textInputHandlerOut(event:FocusEvent):void {
//our textfield lost focus, remove our listener.
stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
}
function keyDownHandler(e:KeyboardEvent):void{
//a key was pressed, check if it was Enter => charCode 13.
if(e.charCode == 13){
//ok, enter was pressed. Do your thing.
trace("We pressed enter, doSomething")
}
}
我使用過: inputText.addEventListener(KeyboardEvent.KEY_DOWN,handler); 函數處理函數(事件:KeyboardEvent){if(event.charCode == 13){ doSomething(); } } 它的工作原理。謝謝。 – 2010-02-19 16:33:19
@Jonathan - 我編輯了答案來反映真相。 – 2011-01-07 16:52:51
在發表這樣的廢話之前,請檢查一下您的事實,這個問題已經過了一年多了,超過4000人被誤認爲相信這些簡單的事情是困難的。 – 2011-01-07 16:53:35