2014-07-11 23 views
0

我有一个登录功能,在用户输入用户名和密码并点击登录按钮后激活。它完美地工作,但有些人想要更快地做事;而不是在输入密码后点击按钮,他们想要按Enter键登录...但同时,我希望登录按钮也能工作。我如何让一个函数侦听两种不同的事件(一个MouseEvent和一个KeyboardEvent)?AS3让函数侦听不同种类的事件

我试过类似checkLogin(e:MouseEvent || e:KeyboardEvent)的东西但他们只是抛出我的错误。

这里是我的代码...

function checkLogin(e:MouseEvent):void 
{ 
    trace("Submition Going Down!!"); 
    if (username.text == "" || password.text == "") 
    { 
     //Lots and lots of checks... 
    else 
    { 
     //if the user and pass fields are valid 
     logErrorT.text = "\n\nRequesting Login..."; 
     processLogin(); 
    } 
} 
loginButton.addEventListener(MouseEvent.CLICK, checkLogin); 
//All this listens for clicks only. 

回答

1

这是很简单的实际。首先,你必须先取消极限的事件类型checkLogin的监听,像这样:

function checkLogin(e:Event):void 
{ 
    //code 
} 

然后你只需要它来监听键盘事件...

function runCheck(e:KeyboardEvent):void 
    { 
     if (e.charCode == 13) //charCode 13 is Enter 
     { 
      checkLogin(e); 
      //e is the KeyboardEvent. 
     } 
    } 
password.addEventListener(KeyboardEvent.KEY_DOWN, runCheck); 

希望我帮助,我没有这个问题太久,但我无法在网上找到答案。所以我想我会给任何困惑的初学者一个答案。祝你好运! ^^

+0

也许最好将键盘的eventlisterer附加到所有文本字段的父级,现在只有当用户将注意力集中在密码字段上时才会触发输入按键,而当用户专注于用户名textfield。我认为最好是在KEY_UP而不是KEY_DOWN事件上听 –

+0

@StefanvandeVooren实际上,只有在密码字段中按下时才会激活,因为监听器已连接到密码文本字段:'password.addEventListener(KeyboardEvent.KEY_DOWN ,runCheck);'ps:我想了解,使用KEY_UP而不是KEY_DOWN有什么优势?谢谢^^ – MNOPYZ

+0

对不起,我认为用提交表单提交的正常HTLM表单是在回车键上提交的,但是您的键是正确的。因此KEY_UP没有优势。因为在你的问题你有“如果(username.text ==”“|| password.text ==”“)”我假设你有2个输入字段。我认为当输入键仅在用户将注意力集中在密码输入字段而不是用户名字段上时才起作用。 Ť –

相关问题