捕捉'进入'输入密钥不起作用

时间:2014-10-26 03:46:30

标签: javascript listener enter keyup

我疯狂地想弄清楚为什么这不起作用......我有一个文本字段,我想在有人按下输入时捕获,以便可以聚焦“下一个”按钮。

这或多或少是id为'guess'的输入。

<input type='text' size='30' id='guess' autocomplete='off' value='' onMouseOver='javascript:this.focus();'>

我添加了这个事件监听器,但它没有激活......

document.getElementById('guess').addEventListener('keydown', focusnextbutton(event));

function focusnextbutton(e){
    alert('you pushed a button');
    if(e.keyCode == 13){
        // alert('Button was enter');
        // document.getElementById('next_btn').focus();
    }
}

“你按下按钮”警报甚至没有出现,我无法理解为什么。救命?我在Ubuntu上使用Chrome是否相关。

3 个答案:

答案 0 :(得分:0)

不确定为什么它不起作用,但是如果你将行改为:

document.getElementById('guess').addEventListener('keydown', focusnextbutton,false);

它会正常工作

答案 1 :(得分:0)

您必须在focusnextbutton函数后删除括号。

document.getElementById('guess').addEventListener('keydown', focusnextbutton);

这是因为addEventListener的第二个参数是一个要调用的函数。当代码第一次运行时,addEventListener立即运行第二个参数,并期望为参数返回一个函数。例如,您也可以这样做:

document.getElementById('guess').addEventListener('keydown', function(){ focusnextbutton(event); });

作为第二个参数的匿名函数是一个函数定义,因此在首次计算代码时不运行,但是在keydown上运行IS。

您会注意到,当您加载页面时,会立即运行“您按下按钮”提醒。这是因为在添加事件侦听器时调用该函数,这是调试此错误的关键。

答案 2 :(得分:0)

试试这个

document.getElementById('guess').addEventListener('keydown',function(event){
    focusnextbutton(event);
});

也将事件参数传递给回调函数。这就是之前答案所缺少的。

Fiddle Link