更正答案
您可以轻松地听,当文本字段集中发生的键盘事件。
只需将一个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