我想在用户填写AS3中的输入文本字段时按下回车键。 我想我必须做这样的事情:
inputText.addEventListener(Event. ? , func);
function func(e:Event):void{
if(e. ? == "Enter"){
doSomething();
}
}
但我找不到最好的方法来做到这一点。 顺便说一句,输入文本有一个限制:
inputText.restrict = "0-9";
我应该在限制中添加回车键吗?
inputText.restrict = "0-9\n";
提前致谢。
答案 0 :(得分:33)
更正后的答案
您可以轻松收听文本字段聚焦时发生的键盘事件。
只需将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();
}
}
另外,文本字段还会发送其他有用的事件:
上一个错误答案:
我认为实际做你想做的事的唯一方法是有点复杂。
基本上,当按下Enter键时,您无法从常规TextField中获取任何事件。你必须做些工作......
一个想法是听取文本领域的焦点事件。当它具有焦点时,你可以为舞台上的键盘事件添加一个监听器,并检查按下的键是否为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" )
}
}
答案 1 :(得分:2)
对于那些想知道如何使用TextInput字段而不是TextField来处理“Enter”键的人来说,这是一个简单的过程:
import fl.events.ComponentEvent
...
myListeningField.addEventListener(ComponentEvent.ENTER, listenerMethod);
function listenerMethod(e:Event):void{
//DO SOME STUFF
}
答案 2 :(得分:0)
您使用的是文本字段还是TextInput?
当按下enter时,TextInput将调度Enter事件。有关这方面的更多信息,请访问http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/fl/controls/TextInput.html#event:enter
我不确定这对于Textfield是如何工作的。