Настройка фокуса на кнопку не работает

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

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

Ответ 1

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?
    }
});

Ответ 2

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

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

с

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

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

Ответ 3

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

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

Ответ 4

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