Настройка фокуса на кнопке не работает - PullRequest
11 голосов
/ 18 октября 2011

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

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

Ответы [ 4 ]

9 голосов
/ 18 октября 2011

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

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

с

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

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

7 голосов
/ 18 октября 2011

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?
    }
});
1 голос
/ 18 октября 2011

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

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

0 голосов
/ 19 июля 2013

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

...