Установка фокуса на кнопку не работает

Я пытаюсь установить фокус на кнопку, пока пользователь нажимает клавишу Enter в текстовом поле. Но это не работает. Я использую браузер Internet Explorer 8. Я что-то упускаю?

$("input.Box").live('keydown', function(e) {
    if (e.keyCode == 13) {
        e.preventDefault(); 
        $("#button").focus(); // Not working?
    }
});

person Lamps    schedule 18.10.2011    source источник


Ответы (4)


Microsoft решила, что им не нравится e.keyCode, и вместо этого у них есть собственный синтаксис, e.which.

Вы должны проверить оба:

$("input.Box").live('keydown', function(e) {
    var keyCode = (window.event) ? e.which : e.keyCode;

    if (keyCode == 13)
        e.preventDefault(); 
        $("#button").focus(); // Not working?
    }
});
person Blender    schedule 18.10.2011

Проблема в том, что IE не может реагировать достаточно быстро, поэтому вам нужно добавить небольшую задержку между входом в функцию live и вызовом .focus(). Итак, замените

$("#button").focus();

с

setTimeout(function () {
 $('#button').focus();
}, 100);

Это, в сочетании с использованием e.which с e.keyCode, как предложил Blender, должно решить вашу проблему.

person Ankit Soni    schedule 18.10.2011

Вы уверены, что имя правильное? .NET имеет привычку переименовывать вещи. Вы не указываете язык или среду.

Попробуйте использовать селектор класса. Дайте кнопке имя класса class="Test", а затем выберите с помощью $(".Text").focus().

person griegs    schedule 18.10.2011

Убедитесь, что DOM готов, элемент существует, прежде чем пытаться установить фокус.

person Chad    schedule 19.07.2013
comment
Он не пытается сфокусировать кнопку на загрузке документа. - person Fabio Antunes; 19.07.2013