Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Фокус элемента формы при ее появлении
 
 автор: dimaxz   (04.03.2011 в 11:03)   письмо автору
 
 

есть форма id=FORM_MAIN которая строится на странице в виде модального окна, далее содержимое погружается асинхронно в том числе и поле для заполнения id=TITLE,

как средствами jquery запустить событие на готовность формы FORM_MAIN и элемента TITLE и установить фокус на элементе TITLE????

  Ответить  
 
 автор: SHAman   (04.03.2011 в 11:48)   письмо автору
 
   для: dimaxz   (04.03.2011 в 11:03)
 

$(function()    {
    $('#TITLE').focus();
});


Ну это если синхронно. Перечитал ваше сообщение. Если асинхронно, то у вас же аякс-обработчик стоит, который ловит саму форму и рисует ее. Ну вот в конце этого обработчика нужно дописать заветное $('#TITLE').focus();

  Ответить  
 
 автор: dimaxz   (04.03.2011 в 12:01)   письмо автору
 
   для: SHAman   (04.03.2011 в 11:48)
 

тут вот еще какая штука если мы закрываем форму (она становится "невидимой") когда жмем показать заново то она второй раз не рендерится а просто становится видимой, вообщем суть такая что инпутов с id= TITLE может быть несколько (невидимые) а мне нужен лишь тот который виден и находится в форме FORM_MAIN

  Ответить  
 
 автор: SHAman   (04.03.2011 в 13:14)   письмо автору
 
   для: dimaxz   (04.03.2011 в 12:01)
 

$('#FORM_MAIN #TITLE:visible').focus();


Или как-то так. Смотрите в сторону :visible.

  Ответить  
 
 автор: dimaxz   (04.03.2011 в 14:14)   письмо автору
 
   для: SHAman   (04.03.2011 в 13:14)
 

но это событие надо еще дополнить событием на готовность элемента TITLE

  Ответить  
 
 автор: SHAman   (04.03.2011 в 14:27)   письмо автору
 
   для: dimaxz   (04.03.2011 в 14:14)
 

Ну дополните. Но вообще-то, скорее всего, у вас известен момент когда это поле уже видно.

Чего вы хотите-то? Там скрипт на одну строку. Метод focus(). Когда его дергать - вам виднее, потому что только вы понимаете как у вас там все происходит. Я уже сгенерировал несколько решений, но вы все отвергаете почему-то.

  Ответить  
 
 автор: dimaxz   (04.03.2011 в 14:36)   письмо автору
 
   для: SHAman   (04.03.2011 в 14:27)
 

в том то и дело что нет такого момента при котором поле видно

$('#task_t_form #ol_subject').load(function(){
this.focus()
alert('focus')
});

при load вообще ничего не происходит

а при ready вообще если форма еще не формировалась

  Ответить  
 
 автор: SHAman   (04.03.2011 в 14:50)   письмо автору
 
   для: dimaxz   (04.03.2011 в 14:36)
 

Проблема все еще не ясна.
Непонятно что находится на странице в момент загрузки, когда и что именно подгружается аяксом, куда оно девается и как когда убирается с экрана и т.д.

По идее, как только вы встроили объект в DOM - можно вешать на него обработчики. Но тут, в общем, так дело обстоит:

1) если вы загрузили что-то аяксом и тут же показали нужно последней строкой сделать этот фокус и все будет работать.
2) если вы загрузили так, что оно скрыто, то существует какой-то скрипт, который эту форму будет показывать. А раз так, то в конец этого скрипта нужно добавить этот злосчастный фокус.

Я не понимаю в чем проблема. Вам не нужно пытаться ловить события. Вам нужно просто дописать одну строку в те места, где форма делается видимой.

  Ответить  
 
 автор: dimaxz   (04.03.2011 в 15:04)   письмо автору
 
   для: SHAman   (04.03.2011 в 14:50)
 

http://myproject.lanetz.ru/

двойной щелчек по таблице покажет форму

  Ответить  
 
 автор: SHAman   (04.03.2011 в 17:18)   письмо автору
 
   для: dimaxz   (04.03.2011 в 15:04)
 

Просто покажите функцию, которая отображает форму.

[поправлено модератором]

  Ответить  
 
 автор: sim5   (04.03.2011 в 15:09)   письмо автору
 
   для: 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

  Ответить  
 
 автор: dimaxz   (04.03.2011 в 15:35)   письмо автору
 
   для: 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:38)   письмо автору
 
   для: dimaxz   (04.03.2011 в 15:35)
 

вот мне и нужно НЕ ковырятся в каждом виджете на событии ajax "ЗАГРУЖЕННО УСПЕШНО"

а в конструкторе form.init сфокусировать элемент если он появился и видим и находится внутри формы _name

  Ответить  
 
 автор: sim5   (04.03.2011 в 16:04)   письмо автору
 
   для: dimaxz   (04.03.2011 в 15:38)
 

Вы читали выделенное жирным, что callback, это ваша функция после завершения операции загрузки данных с сервера? Вот и пишите в этой функции все что вам нужно.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования