Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   установка фокуса в форме логина на поле имени (https://javascript.ru/forum/jquery/68240-ustanovka-fokusa-v-forme-logina-na-pole-imeni.html)

winch 04.04.2017 06:16

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

так не работает
$(function(){
      $("input[name='login_name']").trigger("focus");
});

а вот так работает
setTimeout(function(){
      $("input[name='login_name']").trigger("focus");
},0);


кто нибудь мог бы объяснить почему?

p.s. сама форма логина появляется в результате ajax вызова.

ksa 04.04.2017 08:30

Цитата:

Сообщение от winch
кто нибудь мог бы объяснить почему?

Так ты сам дал ответ
Цитата:

Сообщение от winch
сама форма логина появляется в результате ajax вызова

Т.е. на момент "готовности документа" того элемента просто нет на странице.

winch 04.04.2017 09:03

но этот код скрипта появляется (и следовательно выполняется) только вместе с формой.

winch 04.04.2017 09:18

причем если сделать, например, так:
$(function(){
      $("input[name='login_name']").css({border:'red'}).trigger("focus");
});

то красная рамочка вокруг поля появляется, а фокус ставиться всё равно не хочет.

ksa 04.04.2017 09:24

Цитата:

Сообщение от winch
а фокус ставиться всё равно не хочет

Так может его "забирает" другой элемент...

winch 04.04.2017 09:45

а как другой элемент может "забирать фокус" без js кода?
почему тогда через setTimeout работает?

ksa 04.04.2017 10:24

Цитата:

Сообщение от winch
а как другой элемент может "забирать фокус" без js кода?

Мой хрустальный шар маленько поистерся, т.ч. картинка смазанная.



Цитата:

Сообщение от winch
почему тогда через setTimeout работает?

Потому как он выполняется позднее всех и его уже никто не "перебивает".

winch 04.04.2017 11:07

а тогда каким образом можно протрейсить, чтобы найти того, кто фокус забирает?

рони 04.04.2017 11:10

Цитата:

Сообщение от winch
сама форма логина появляется в результате ajax вызова

в ajax и надо добавлять фокус

winch 04.04.2017 11:19

Цитата:

Сообщение от рони (Сообщение 449202)
в ajax и надо добавлять фокус

в смысле? так?
$.ajax({ url: '...',
	success: function(res){
		$("input").focus();
	}
});


мне так неудобно, поскольку ajax вызов у меня универсальный, для разных форм и диалоговых окон, а фокус мне надо только в форме логина ставить.


Часовой пояс GMT +3, время: 15:03.