Как установить фокус на текстовое поле в диалоговом окне jquery? - PullRequest
0 голосов
/ 13 июля 2011

Есть ли способ установить фокус на поле ввода внутри диалогового окна jquery?Я посмотрел на какой-то другой вопрос здесь, но не смог найти ответ.

Я пытался ..

, open: function() { $(this).find("#inp").focus(); }

, но это не сработало.

Есть идеи?Спасибо.

ОБНОВЛЕНИЕ

содержимое диалогового окна извлекается через вызов ajax.

Ответы [ 2 ]

1 голос
/ 13 июля 2011

Попробуйте

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

Но если вы загружаете содержимое диалога с помощью AJAX, вам следует сосредоточиться на функции обратного вызова

$('#result').load('ajax/test.html', function() {
  $("#inp").focus();
});
0 голосов
/ 13 июля 2011

Итак, ваша функция открытия работает, верно? Вы проверили, находит ли он #inp? Просто сделай

console.log($('#inp'));

И посмотрите, действительно ли элемент существует в тот момент, когда вызывается focus (). Если это не так, то, возможно, DOM не был завершен (я предполагаю, что ваша функция open () вызывается из обратного вызова Ajax, верно?).

Ajax-обратные вызовы «success» и «error» вызываются после завершения вызова, но не обязательно после завершения всех полученных DOM-манипуляций. Один (немного хакерский) способ, которым я решил эту проблему, заключался в задержке фокуса на несколько миллисекунд:

setTimeout(function () {
    $(this).find("#inp").focus();
}, 50);

Это дает DOM немного времени для установки #inp.

...