|
|
|
| есть форма id=FORM_MAIN которая строится на странице в виде модального окна, далее содержимое погружается асинхронно в том числе и поле для заполнения id=TITLE,
как средствами jquery запустить событие на готовность формы FORM_MAIN и элемента TITLE и установить фокус на элементе TITLE???? | |
|
|
|
|
|
|
|
для: dimaxz
(04.03.2011 в 11:03)
| |
$(function() {
$('#TITLE').focus();
});
|
Ну это если синхронно. Перечитал ваше сообщение. Если асинхронно, то у вас же аякс-обработчик стоит, который ловит саму форму и рисует ее. Ну вот в конце этого обработчика нужно дописать заветное $('#TITLE').focus(); | |
|
|
|
|
|
|
|
для: SHAman
(04.03.2011 в 11:48)
| | тут вот еще какая штука если мы закрываем форму (она становится "невидимой") когда жмем показать заново то она второй раз не рендерится а просто становится видимой, вообщем суть такая что инпутов с id= TITLE может быть несколько (невидимые) а мне нужен лишь тот который виден и находится в форме FORM_MAIN | |
|
|
|
|
|
|
|
для: dimaxz
(04.03.2011 в 12:01)
| |
$('#FORM_MAIN #TITLE:visible').focus();
|
Или как-то так. Смотрите в сторону :visible. | |
|
|
|
|
|
|
|
для: SHAman
(04.03.2011 в 13:14)
| | но это событие надо еще дополнить событием на готовность элемента TITLE | |
|
|
|
|
|
|
|
для: dimaxz
(04.03.2011 в 14:14)
| | Ну дополните. Но вообще-то, скорее всего, у вас известен момент когда это поле уже видно.
Чего вы хотите-то? Там скрипт на одну строку. Метод focus(). Когда его дергать - вам виднее, потому что только вы понимаете как у вас там все происходит. Я уже сгенерировал несколько решений, но вы все отвергаете почему-то. | |
|
|
|
|
|
|
|
для: SHAman
(04.03.2011 в 14:27)
| | в том то и дело что нет такого момента при котором поле видно
$('#task_t_form #ol_subject').load(function(){
this.focus()
alert('focus')
});
при load вообще ничего не происходит
а при ready вообще если форма еще не формировалась | |
|
|
|
|
|
|
|
для: dimaxz
(04.03.2011 в 14:36)
| | Проблема все еще не ясна.
Непонятно что находится на странице в момент загрузки, когда и что именно подгружается аяксом, куда оно девается и как когда убирается с экрана и т.д.
По идее, как только вы встроили объект в DOM - можно вешать на него обработчики. Но тут, в общем, так дело обстоит:
1) если вы загрузили что-то аяксом и тут же показали нужно последней строкой сделать этот фокус и все будет работать.
2) если вы загрузили так, что оно скрыто, то существует какой-то скрипт, который эту форму будет показывать. А раз так, то в конец этого скрипта нужно добавить этот злосчастный фокус.
Я не понимаю в чем проблема. Вам не нужно пытаться ловить события. Вам нужно просто дописать одну строку в те места, где форма делается видимой. | |
|
|
|
|
|
|
|
для: SHAman
(04.03.2011 в 14:50)
| | http://myproject.lanetz.ru/
двойной щелчек по таблице покажет форму | |
|
|
|
|
|
|
|
для: dimaxz
(04.03.2011 в 15:04)
| | Просто покажите функцию, которая отображает форму.
[поправлено модератором] | |
|
|
|
|
|
|
|
для: dimaxz
(04.03.2011 в 14:36)
| | .load()
Осуществляет запрос к серверу методом GET, без перезагрузки страницы. Полученные от сервера данные рассматриваются библиотекой jQuery как html. При получении данных, они автоматически будут помещены внутрь выбранных элементов на странице. Функция имеет несколько необязательных параметров.
.load(url, [data], [callback], [dataType]):jQueryv:1.0
url — url-адрес, по которому будет отправлен запрос.
data — данные, которые будут отправлены на сервер. Они должны быть представлены в форме объекта, например: {fName1:value1, fName2:value2, ...}.
callback(data, textStatus, XMLHttpRequest) — пользовательская функция, которая будет вызвана после того, как присланный сервером html-текст будет помещен в выбранные элементы страницы.
data — данные, присланные с сервера.
textStatus — статус того, как был выполнен запрос.
XMLHttpRequest — объект XMLHttpRequest | |
|
|
|
|
|
|
|
для: sim5
(04.03.2011 в 15:09)
| | работает так:
//так запускается форма с вкладками формируется объект с именем form_task а внутри формы идет рендеринг вкладок и уже ОНИ АСИНХРОННО подгружают данные
form.init('form_task',['tabs'],'title')
//такой вызов создаст форму не тока с вкадками но и с autocomplete
form.init('form_task',['tabs','autocomlpete'],false)
//а такой самый простой загрузит асинхронно содержимое
form.init('form_task',['frame'],'title')
в примере указал самый простой способ,здесь важно имеено во время формирования формы установить событие которое бы делало фокус на указанном элементе
form.init = function(_name,_obj,_focusID){
//здесь формируем окно _name
//здесь запускаем другие виджеты _obj
//здесь делаем фокус на элементе если указан _focusID и если загружен в DOM
}
|
| |
|
|
|
|
|
|
|
для: dimaxz
(04.03.2011 в 15:35)
| | вот мне и нужно НЕ ковырятся в каждом виджете на событии ajax "ЗАГРУЖЕННО УСПЕШНО"
а в конструкторе form.init сфокусировать элемент если он появился и видим и находится внутри формы _name | |
|
|
|
|
|
|
|
для: dimaxz
(04.03.2011 в 15:38)
| | Вы читали выделенное жирным, что callback, это ваша функция после завершения операции загрузки данных с сервера? Вот и пишите в этой функции все что вам нужно. | |
|
|
|