Настройка фокуса на кнопку не работает
Я пытаюсь установить фокус на кнопку, пока пользователь нажимает клавишу 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 готов, элемент существует, прежде чем пытаться установить фокус.