В последнем примере используется jQuery'фокус s ()
документации государства
$('#id').focus()
необходимо сделать ввод в фокусе (активным). Я могу'т похоже, чтобы получить это работает.
Даже в консоли на этом сайте, Я'м пытаясь его в поле поиска
$('input[name="q"]').focus()
и я'м не получаю ничего. Любые идеи?
На самом деле тот пример ты привел для фокусировки на данном сайте работает просто отлично, как долго, как вы'повторно не ориентирована на консоли. Причина того, что's не работает просто потому что он's не ворует фокус из dev консоли. Если вы выполните следующий код в консоли, а затем быстро нажмите в окне вашего браузера, после, вы увидите, что фокус в поле поиска:
setTimeout(function() { $('input[name="q"]').focus() }, 3000);
Что касается вашего другого, единственное, что дает мне неприятности в прошлом-это порядок событий. Нельзя назвать фокус() на элемент, который еще'т был привязан к DOM. Есть элемент, который вы пытаетесь сосредоточиться уже был привязан к DOM?
Некоторые ответы здесь предлагают использовать функции setTimeout
затягивать процесс фокусировки на целевой элемент. Один из них упоминает, что цель находится внутри модального диалогового окна. Я не могу комментировать правильность `'solution через setTimeout, не зная конкретных деталей, где он был использован. Однако, я думал, что я должен здесь обеспечить ответ, чтобы помочь людям, которые столкнулись с этой теме Как и я
Простой факт заключается в том, что вы не можете сосредоточиться на элемент, который еще не виден. Если вы столкнулись с этой проблемой убедитесь, что цель на самом деле видно при попытке сфокусироваться она сделана. В моем случае я делаю что-то вдоль этих линий
$('#elementid').animate({left:0,duration:'slow'});
$('#elementid').focus();
Это не работа. Я только понял, что происходит, когда я казнил $('#идентификатор элемента').фокус () из консоли, которая сделал работа. Разница - в моем выше целевого кода нет уверенности, что цель на самом деле будет виден после анимации не может быть полным. И там кроется разгадка
$('#elementid').animate({left:0,duration:'slow',complete:focusFunction});
function focusFunction(){$('#elementid').focus();}
работает так, как ожидалось. Я тоже изначально положить в раствор функции setTimeout
и это тоже сработало. Тем не менее, произвольно выбранного тайм-аут обязательно рано или поздно решение в зависимости от того, как медленно принимающее устройство идет о процессе убедившись, что целевой элемент.
Просто на случай, если кто-то еще натыкается на этот вопрос и была такая же ситуация у меня была - я пытался установить фокус при нажатии на другой элемент, но в упор не'т, кажется, работают. Оказывается, мне просто нужен е.метод preventDefault (); - вот'ы пример:
$('#recipients ul li').mousedown(function(e) {
// add recipient to list
...
// focus back onto the input
$('#message_recipient_input').focus();
// prevent the focus from leaving
e.preventDefault();
});
Это помогло:
если вы позвоните объекта HTMLElement.фокус() из обработчика события mousedown, необходимо вызвать событие.метод preventDefault (), чтобы сохранить фокус покидать объект HTMLElement. Источник: https://developer.mozilla.org/en/docs/Web/API/HTMLElement/focus
Я понимаю, что это старый, но наткнулся на нее сегодня. Ни один из ответов работал для меня, но я нашел, что работал через setTimeout. Я хотел, чтобы мой акцент ставится на вход подал модальной, с помощью метода setTimeout работал. Надеюсь, что это помогает!
Я также имел эту проблему. Решение, которое сработало в моем случае с помощью свойства tabindex на HTML-элемент.
Я был с использованием НГ-повторить некоторые элементы внутри списка и я не смог вывести фокус Первой ли с помощью .фокус(), поэтому я просто добавил tabindex атрибут для каждого ли во время цикла.
так что теперь в <li в НГ-повторите="у пользователей в пользователям изменения на" свойство tabindex=" и{{$индекс+1}}" и></ли>
Что +1 был индекс начинается с 0. Также убедитесь, что элемент присутствует в DOM, прежде чем звонить .фокус (функция)
Я надеюсь, что это помогает.
Добавить задержку перед фокус(). 200 мс достаточно
function focusAndCursor(selector){
var input = $(selector);
setTimeout(function() {
// this focus on last character if input isn't empty
tmp = input.val(); input.focus().val("").blur().focus().val(tmp);
}, 200);
}
Для тех, кто с проблемой не работать, потому что вы использовали " и$(элемент).показать () и". Я решил это следующим способом:
var textbox = $("#otherOption");
textbox.show("fast", function () {
textbox[0].focus();
});
Так что вам не нужен таймер, то он будет выполняться после метода Show завершена.
Дополнительное решение была такая же проблема, где фокус() не'т, кажется, работают, но в итоге оказалось, что нужна была прокрутка в правильное положение: