Установите фокус на поле в динамически загружаемом DIV
Автор вопроса: MrGОтветов: 9
Как правильно установить фокус на определенное поле в динамически загружаемом DIV?
$("#display").load("?control=msgs"); // loads the HTML into the DIV
$('#display').fadeIn("fast"); // display it
$("tex#header").focus(); // ?? neither that
$("input#header").focus(); // ?? nor that
$('#display', '#header').focus() // ?? nor that
$("#header").focus(); // ?? nor that works
Функция load() является асинхронной функцией. Вы должны установить фокус после завершения вызова load(), то есть в функции обратного вызова load(), потому что в противном случае элемент, на который вы ссылаетесь с помощью #header, еще не существует. Например:
У меня были проблемы даже с этим решением, поэтому я сделал setTimeout в обратном вызове и установил фокус в тайм-ауте, чтобы / действительно / убедиться, что элемент существует.
Ответ 2 · рейтинг 12 · Paul Suart
Вы пробовали просто выбирать по идентификатору?
$("#header").focus();
Поскольку идентификаторы должны быть уникальными, нет необходимости в более конкретном селекторе.
Ответ 3 · рейтинг 9 · Arta
Да, это происходит при манипулировании элементом, которого еще не существует (несколько участников здесь также сделали хорошее замечание с уникальным идентификатором). Я столкнулся с похожей проблемой. Мне также нужно передать аргумент функции, управляющей элементом, который вскоре будет отображен.
Решение, отмеченное здесь, мне не помогло. Наконец я нашел тот, который работал прямо из коробки. И это тоже очень красиво - обратный звонок.
Вместо:
$( '#header' ).focus();
or the tempting:
setTimeout( $( '#header' ).focus(), 500 );
я пробовал, но это не работает, пожалуйста, дайте мне больше советов, чтобы решить эту проблему. Спасибо за вашу помощь
Ответ 5 · рейтинг 3 · Bela
If
$("#header").focus();
не работает, то есть ли на вашей странице еще один элемент с идентификатором заголовка?
Используйте firebug для запуска $("#header") и посмотрите, что он вернет.
Ответ 6 · рейтинг 2 · Per Lindberg
Как указал Ому, вы должны установить фокус в функции готовности документа. jQuery предоставляет это для вас. И сделайте выбор по идентификатору. Например, если у вас есть страница входа:
большая часть ошибок связана с тем, что вы используете неправильный объект для установки правильности или функции. Используйте console.log(new_fild); чтобы увидеть, к какому объекту вы пытаетесь установить правильность или функцию.