我疯狂地想弄清楚为什么这不起作用......我有一个文本字段,我想在有人按下输入时捕获,以便可以聚焦“下一个”按钮。
这或多或少是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是否相关。
答案 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);
});
也将事件参数传递给回调函数。这就是之前答案所缺少的。