LINUX.ORG.RU

JS фокус на опр. поле при загрузке окна

 


0

1

Есть скрипт всплывающего окна, если в нужном поле выставлять autofocus, то не работает, и через скрипт тоже:

<!--PoPup script-->
<script>
$(function() {
$("a[rel]").overlay(function() {
var wrap = this.getContent().find("div.wrap");
//alert("Test script");
document.getElementById("password").focus(); //вот тут, при загрузке окна, необходимо выставить фокус в инпуте с id="password"
if (wrap.is(":empty")) {
wrap.load(this.getTrigger().attr("href"));
}
});
});
</script>
Как решить проблему?


Б-же, какой говнокод!

anonymous
()

особо не вникал но скорей всего форус выставляешь до того как элемент добавляется в дом или типа того, сделай setTimeout(function () { тут ставь фокус }, 1), поиграй со значениями таймаута, не лучшее решение особенно если там транзиции используются, лучше конечно лупить некое событие когда все уже 100% добавленно и анимации закончились, но идею ты понял

trashymichael ★★★
()

ну у тебя так и есть, сначала focus потом load, к тому же load 1000% асинхронный, для начала сделай console.log(password.focus()) и глянь есть ли там элемент, это во-первых, во вторых focus это метод jquery кажется, а getElementById возвращает голую ноду

trashymichael ★★★
()
Ответ на: комментарий от trashymichael

с таймаутом 600 все работает — спасибо. Не могли бы подсказать, как переписать без таймаута (я js практически не знаю)?

makeB
() автор топика
Ответ на: комментарий от makeB

Если функция добавляющая элемент в дом имеет колбэк, делать это в нём.

Y ★★
()
Ответ на: комментарий от makeB
wrap.load(url, function() {
  document.getElementById("password").focus();
});
zz ★★★★
()

Олсо, зачем ты делаешь getElementById когда у тебя jquery во все поля в коде. $('#password') твой друге.

zz ★★★★
()
Ответ на: комментарий от anonymous

ну да, есть и колбек, я сразу писал что это не оптимальное решение но быстро пофиксить поможет, алсо ты знаешь другие способы вывода из потока или как там это зовется, иногда от этого не убежишь, либо наименьшее зло

trashymichael ★★★
()

Что за месиво из библиотек? Вижу и $ и дом методы и ещё что-то левое.

Вроде ты фокус выставляешь до того как даже вызвать загрузку, вызывай в коллбэке. И не ифрейм ли там?

Kalashnikov ★★★
()
Ответ на: комментарий от makeB

я js практически не знаю

Итого. JS ты не знаешь, спрашиваешь не в целях просвещения, а чтобы решить конкретную задачу не забивая себе голову простейшим гуглежем. Вопрос - зачем полез? Подкалымить захотелось посредством загаживания интернета ещё одним наколеночным сайтиком?

P. S. Мне не трудно ответить на вопрос человеку, которому действительно интересно понять то, что он делает. Более того - я всячески приветствую в людях любознательность.

anonymous
()
Ответ на: комментарий от anonymous

К сожалению, сейчас, как правило, принято отвечать на такие посты, как твой, примерно так: «главное что мои сайты бобло преносят».

cdshines ★★★★★
()
Ответ на: комментарий от anonymous

Вопрос - зачем полез?

Ой, ты эти лекции правильной жизни оставь для детей своих.

makeB
() автор топика
Ответ на: комментарий от Vit

верстайте на html5

На нем и делаю, автофокус не работает, если всплывающее окно с формой имеет display: none изначально, по этому приходится извращаться скриптом.

makeB
() автор топика
Ответ на: комментарий от cdshines

примерно так: «главное что мои сайты бобло преносят».

А это и есть главное, ваш сарказм не удался.

makeB
() автор топика
Ответ на: комментарий от cdshines

Хорошо, что я не с тобой говорил.

Угу, наука тоже не кому даром не нужна без выгоды будущего использования ее достижений — это так, для справки правильной жизни, точнее реального взгляда на жизнь.

makeB
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.