2014-10-26 7 views
0

Я схожу с ума, пытаясь понять, почему это не работает ... У меня есть текстовое поле, и я хочу захватить, когда кто-то нажимает кнопку ввода, чтобы «следующий» кнопка может быть сфокусирована.Захват клавиши «Ввод» на входе не работает

Это более или менее вход с идентификатором '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(); 
    } 
} 

«вы нажал кнопку» предупреждение даже не придумывают, и я не могу понять, почему. Помогите? Я использую Chrome на Ubuntu, если это актуально.

ответ

0

Не знаю, почему это не работает, либо, но если вы измените строку:

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

он будет работать нормально

+0

Это не сработало:/Консоль ничего не показывает ни. – hashi

0

Вы должны удалить скобки после функции focusnextbutton.

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

Это потому, что второй аргумент addEventListener является функцией для вызова. Когда код запускается в первый раз, addEventListener немедленно запускает второй аргумент и ожидает, что функция будет возвращена для аргумента. Например, вы могли бы также сделать:

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

Анонимная функция в качестве второго аргумента является определение функции и, следовательно, не выполняется, когда код первого оценивается, но работать на KeyDown.

Вы заметите, что предупреждение «вы нажали кнопку» запускается сразу же при загрузке страницы. Это связано с тем, что функция вызывается, когда прослушиватель событий добавляется и был ключевым для отладки этой ошибки.

+0

Не уверен, что происходит. Это тоже не сработает:/ – hashi

+0

Взгляните на это [jsfiddle] (http://jsfiddle.net/e44asjfq/). Я считаю, что он ведет себя по своему желанию. – user1600704

0

Попробуйте

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

Передайте аргумент события к функции обратного вызова тоже. Этого не хватает в предыдущих ответах.

Fiddle Link