Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.04.2017, 06:16
Аспирант
Отправить личное сообщение для winch Посмотреть профиль Найти все сообщения от winch
 
Регистрация: 30.04.2015
Сообщений: 87

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

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

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


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

p.s. сама форма логина появляется в результате ajax вызова.
Ответить с цитированием
  #2 (permalink)  
Старый 04.04.2017, 08:30
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,210

Сообщение от winch
кто нибудь мог бы объяснить почему?
Так ты сам дал ответ
Сообщение от winch
сама форма логина появляется в результате ajax вызова
Т.е. на момент "готовности документа" того элемента просто нет на странице.
Ответить с цитированием
  #3 (permalink)  
Старый 04.04.2017, 09:03
Аспирант
Отправить личное сообщение для winch Посмотреть профиль Найти все сообщения от winch
 
Регистрация: 30.04.2015
Сообщений: 87

но этот код скрипта появляется (и следовательно выполняется) только вместе с формой.
Ответить с цитированием
  #4 (permalink)  
Старый 04.04.2017, 09:18
Аспирант
Отправить личное сообщение для winch Посмотреть профиль Найти все сообщения от winch
 
Регистрация: 30.04.2015
Сообщений: 87

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

то красная рамочка вокруг поля появляется, а фокус ставиться всё равно не хочет.
Ответить с цитированием
  #5 (permalink)  
Старый 04.04.2017, 09:24
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,210

Сообщение от winch
а фокус ставиться всё равно не хочет
Так может его "забирает" другой элемент...
Ответить с цитированием
  #6 (permalink)  
Старый 04.04.2017, 09:45
Аспирант
Отправить личное сообщение для winch Посмотреть профиль Найти все сообщения от winch
 
Регистрация: 30.04.2015
Сообщений: 87

а как другой элемент может "забирать фокус" без js кода?
почему тогда через setTimeout работает?
Ответить с цитированием
  #7 (permalink)  
Старый 04.04.2017, 10:24
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,210

Сообщение от winch
а как другой элемент может "забирать фокус" без js кода?
Мой хрустальный шар маленько поистерся, т.ч. картинка смазанная.



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

Последний раз редактировалось ksa, 04.04.2017 в 10:26.
Ответить с цитированием
  #8 (permalink)  
Старый 04.04.2017, 11:07
Аспирант
Отправить личное сообщение для winch Посмотреть профиль Найти все сообщения от winch
 
Регистрация: 30.04.2015
Сообщений: 87

а тогда каким образом можно протрейсить, чтобы найти того, кто фокус забирает?
Ответить с цитированием
  #9 (permalink)  
Старый 04.04.2017, 11:10
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

Сообщение от winch
сама форма логина появляется в результате ajax вызова
в ajax и надо добавлять фокус
Ответить с цитированием
  #10 (permalink)  
Старый 04.04.2017, 11:19
Аспирант
Отправить личное сообщение для winch Посмотреть профиль Найти все сообщения от winch
 
Регистрация: 30.04.2015
Сообщений: 87

Сообщение от рони Посмотреть сообщение
в ajax и надо добавлять фокус
в смысле? так?
$.ajax({ url: '...',
	success: function(res){
		$("input").focus();
	}
});


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

Последний раз редактировалось winch, 04.04.2017 в 11:23.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Калькулятор с вариантом значений. dzho Общие вопросы Javascript 45 06.08.2017 03:54
Проверка строки ввода логина в форме assessor Events/DOM/Window 17 13.11.2012 12:52
Установка фокуса на элемент с сохранением скрола antonM jQuery 3 25.06.2012 15:25
Установка фокуса в конец формы Zhazhah jQuery 2 25.05.2011 18:20
Установка фокуса ввода на JavaScript VIt Общие вопросы Javascript 3 18.08.2008 15:48