установка фокуса в форме логина на поле имени
...вроде простая задача, но пришлось с ней больше часа просидеть. в результате:
так не работает $(function(){ $("input[name='login_name']").trigger("focus"); }); а вот так работает setTimeout(function(){ $("input[name='login_name']").trigger("focus"); },0); кто нибудь мог бы объяснить почему? p.s. сама форма логина появляется в результате ajax вызова. |
Цитата:
Цитата:
|
но этот код скрипта появляется (и следовательно выполняется) только вместе с формой.
|
причем если сделать, например, так:
$(function(){ $("input[name='login_name']").css({border:'red'}).trigger("focus"); }); то красная рамочка вокруг поля появляется, а фокус ставиться всё равно не хочет. |
Цитата:
|
а как другой элемент может "забирать фокус" без js кода?
почему тогда через setTimeout работает? |
Цитата:
![]() Цитата:
|
а тогда каким образом можно протрейсить, чтобы найти того, кто фокус забирает?
|
Цитата:
|
Цитата:
$.ajax({ url: '...', success: function(res){ $("input").focus(); } }); мне так неудобно, поскольку ajax вызов у меня универсальный, для разных форм и диалоговых окон, а фокус мне надо только в форме логина ставить. |
winch,
да, но после того как добавлена форма в конце success |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
мне так неудобно, поскольку ajax вызов у меня универсальный, для разных форм и диалоговых окон, а фокус мне надо только в форме логина ставить. |
Цитата:
если через атрибуты - то это шаблонный подход - он гибкости не дает, поскольку одной форме надо фокус ставить а другой может совсем другое что то делать. |
Цитата:
|
Причем тут шаблоны и индивидуальные JS? Ну не с небес же сваливаются формы и прочее на страницах, что-то же их определяет, что?
Вы пишите об универсальном асинхронном запросе, а что в данном случае есть универсальность как не клиентский обработчик выполняющий различные определенные задачи? var define = { a: function() { //установить фокус }, b: function() { //раскрасить в горошек } } success: function(data) { var d = $(data).appendTo(selector).find('[data-xxx]') //если есть определения задач, то цикл и их выполнение } А уж серверу определить желаемое не сложно. |
var define = { a: function() { //установить фокус }, b: function() { //раскрасить в горошек } } этот код где должен быть размещен, на основной странице или в подгружаемой форме? |
Это определение функций, операций в рамках "определенной универсальности", и должно быть подключено всегда, по крайне мере там, где используется ваш универсальный запрос.
Через атрибуты ведь можно задать не только операцию/операции, но и аргументы. |
т.е. на основной странице. так?
|
А что есть основная страница?
Ну что за вопросы. Это описание операций для асинхронного запроса, где он подключается, там и должно быть описание. Просто поместите этот объект в тот же скрипт где и код самого запроса. А уже где вы его подключаете мне не ведомо. |
основная страница, в моем понимании выглядит примерно так:
<html> <head> <script src="../jquery.js"></script> <script> function AjaxLoad(){ // универсальная функция, обеспечивающая загрузку …. } </script> </head> <body> <div>......</div> <body/> </html> |
а подгружаемая форм выглядит примерно так:
<form> <input /> ….. </form> <script> $(function(){ // код обслуживающий эту форму }); </script> |
<html> <head> <script src="../jquery.js"></script> <script> //объект функций описывающий определяемые сервером задачи var define = { }; function AjaxLoad(){ // универсальная функция, обеспечивающая загрузку …. } </script> </head> <body> <div>......</div> <body/> </html> Какой смысл их подключать отдельным файлом. Хотя если скрипты объемные, то для удобства можно в режиме отладки иметь и отдельные подключаемые файлы, а вот на сервер помещать упакованные в один. |
Цитата:
|
разных форм на сайте может быть дофига! форма логина, форма регистрации, форма оформления заявки..... и т.д и т.п.
логика работы у каждой формы практически всегда своя индивидуальная. поэтому каждую форму лучше подгружать отдельно, когда она потребуется. |
Цитата:
общий у меня только аякс загрузчик. |
То, что ваш загрузчик принимает от сервера код форм и помещает их на страницу никоим образом не означает, что он универсален. А если наряду с загрузкой форм загружается и скрипт их обслуживающий, то какие тогда проблемы?
И вообще, универсальность не может быть абсолютной, есть границы, в которых приложение либо технический аппарат может выполнять операции/функции расширяющие его возможности, но логически связанные. Вы же не станете к самолету пытаться прицепить плуг для вспашки полей только ради универсальности. Вот так и с веб страницей. Например, после отправки некой формы серверу, в зависимости от ее обработки требуется перенаправить пользователя на другую страницу. Серверу сделать это не сложно, достаточно отправить соответствующий заголовок. Но в режиме асинхронного обмена с клиентом этого сервер уже не сможет сделать, ибо это не будет переадресацией - содержимое страницы будет отдано клиенту как ответ. Но если такое требуется значит это уже есть одна из задач "универсальности". И такие различные задачи, которые будут востребованы, и должны быть определены. Они не являются частью индивидуальных обработчиков тех или иных форм, или прочих элементов. Это набор, операции, которые могут потребоваться при выполнении различных задач/обработчиков. Например, обмен происходит в формате JSON. Если определить через свойства объекта, описываемого этим форматом, те или иные действия на клиенте, то сервер уже может определить эти задачи, опираясь на параметры запроса, результата его обработки и т.п: {"add":{"#a":"data",".b":"data"}, - поместить данные в объект id=a и классом b "msg":"data", - вывести сообщение "opt":[1,2,3] - определить значения переменных "exe":{"a":[...],...} - выполнить функции } и это одним ответом. А обработчику запроса, коли они "универсальный" нужно только проверить свойства и выполнить операции. Это же самое можно задавать и через атрибуты. Все зависит от того, насколько "широка" ваша универсальность и что ею предписано. |
Цитата:
пример его работы можно посмотреть здесь: http://rem-mastera.ru/DemandOrdersList если нажать на: "войти на сайт", "откликнуться", "сделать заказ" то будут подгружаться различные формы. Цитата:
я абсолютно согласен с тем, что любая универсальность имеет границы разумности, и самолету плуг не нужен :) Для редиректа на другую страницу после отправки форм через ajax я тоже использую подобный механизм: сервер, после обработки формы отдает json объект, универсальный отправщик ajax-форм проверяет наличие в этом json поля redirect, если такое поле имеется, бараузер перенаправляется по указанному url. |
Цитата:
|
Часовой пояс GMT +3, время: 16:51. |