Последний пример JQuery в focus()
документации состояний
$('#id').focus()
должен сделать ввод сфокусированным (активным). Я не могу заставить это работать.
Даже в консоли на этом сайте, я пытаюсь это для окна поиска
$('input[name="q"]').focus()
и я ничего не получаю. Любые идеи?
focus()
. Больше информацииОтветы:
На самом деле пример, который вы привели для фокусировки на этом сайте, работает отлично, если вы не сфокусированы на консоли. Причина, по которой это не работает, заключается просто в том, что он не крадет фокус с консоли разработчика. Если вы запустите следующий код в своей консоли, а затем быстро щелкнете в окне браузера после этого, вы увидите, что он сфокусируется на окне поиска:
Что касается вашего другого, единственное, что доставляло мне неприятности в прошлом, это порядок событий. Вы не можете вызвать focus () для элемента, который не был присоединен к DOM. Элемент, который вы пытаетесь сфокусировать, уже подключен к DOM?
источник
setTimeout
для решения проблем порядка операций делает огромной болью в поддержании патологии. Если обнаруживается ошибка, ее действительно сложно отладить. Куда бы вы ни вставляли элемент в DOM, он должен вызываться.focus()
там.Нашел решение в другом месте в сети ...
не сработало.
сделал работу.
источник
Некоторые ответы здесь предлагают использовать,
setTimeout
чтобы задержать процесс фокусировки на целевом элементе. Один из них упоминает, что цель находится внутри модального диалога. Я не могу комментировать дальше о правильностиsetTimeout
решения, не зная конкретных деталей того, где оно было использовано. Тем не менее, я подумал, что должен дать здесь ответ, чтобы выручить людей, которые сталкиваются с этой веткой, как и яПростой факт в том, что вы не можете сосредоточиться на элементе, который еще не виден . Если вы столкнулись с этой проблемой, убедитесь, что цель действительно видна при попытке сфокусироваться на ней. В моем собственном случае я делал что-то подобное
Это не сработало. Я только понял , что происходит , когда я выполнил $ ( «# elementid»). Фокус () `из консоли , который сделал работу. Разница в том, что в моем коде над целью нет уверенности, что цель будет видимой, поскольку анимация может быть не завершена . И здесь кроется ключ
работает так, как ожидалось. Я тоже изначально положил в
setTimeout
решение, и это тоже сработало. Однако произвольно выбранный тайм-аут неизбежно рано или поздно нарушит решение, в зависимости от того, насколько медленно ведущее устройство выполняет процесс, обеспечивающий видимость целевого элемента.источник
visibility:hidden
- он не будет сфокусирован.если вы используете bootstrap + модал, это работает для меня:
источник
Просто на тот случай, если кто-нибудь еще наткнется на этот вопрос и столкнется с той же ситуацией, что и я, - я пытался установить фокус после нажатия на другой элемент, но фокус, похоже, не работал. Оказывается, мне просто нужно
e.preventDefault();
- вот пример:Это помогло:
источник
Я понимаю, что это старо, но наткнулся на это сегодня. Ни один из ответов не сработал для меня, я обнаружил, что сработало setTimeout. Я хотел, чтобы мой фокус был помещен во входную область модального окна, используя setTimeout сработало. Надеюсь это поможет!
источник
setTimeout
является плохим решением. Вы не можете гарантировать время выполнения на компьютере пользователя, поэтому зависящие от времени вещи чрезвычайно хрупки.У меня тоже была эта проблема. Решение, которое работало в моем случае, заключалось в использовании свойства tabindex элемента HTML.
Я использовал
ng-repeat
для некоторых элементов li внутри списка, и я не смог перенести фокус на первый li с помощью .focus (), поэтому я просто добавил атрибут tabindex для каждого li во время цикла.а сейчас
<li ng-repeat="user in users track by $index" tabindex="{{$index+1}}"></li>
То, что +1 был индексом, начинается с 0. Также убедитесь, что элемент присутствует в DOM, прежде чем вызывать функцию .focus ().
Надеюсь, это поможет.
источник
Для тех, у кого проблема не работает, потому что вы использовали «$ (element) .show ()». Я решил это следующим образом:
Так что вам не нужен таймер, он будет запущен после завершения метода show.
источник
slideDown()
,fadeIn()
и т.д.Добавьте задержку перед фокусировкой (). Достаточно 200 мс
источник
Если бы я снова столкнулся с этой проблемой, и, верьте или нет, все, что мне нужно было сделать, это закрыть инструменты разработчика. Видимо вкладка Консоль имеет приоритет фокуса над содержимым страницы.
источник
Убедитесь, что элемент и его родители видны. Вы не можете использовать фокус на скрытых элементах
источник
ДОПОЛНИТЕЛЬНОЕ РЕШЕНИЕ Была такая же проблема, когда focus (), похоже, не работал, но в итоге оказалось, что нужно было прокрутить до правильной позиции:
источник
Для моего случая я должен был указать индекс вкладки (
-1
если только фокусируется через скрипт)источник