Вход

Просмотр полной версии : Вопрос по созданию динамического списка


ApD
08.08.2011, 19:49
Создаю форму регистрации с вводом имени. После ввода хотя бы 2х букв открываться div чуть ниже поля ввода со списком имен на введенные буквы. По клику на имени оно копируется в форму и див скрывается. Проблема в том, что при переходе в другое поле ввода диф должен так же скрываться. Но получается если скрытие div`а вешать на потерю форуса поля ввода, то при нажатии на одно из имен фокус теряется до того как диф получает событие.

Я вижу выход только в отслеживании положения курсора мыши в момент потери фокуса полем ввода, и если мышь над списком имён, то сначала обрабатывать нажатие, а потом уже скрывать этот список. Но тут могу быть проблемы при переходах между полями с помощью Tab, да и вообще какое-то "кривое" решение, как мне кажется.

Возможно есть более простой и эффективный метод?

devote
09.08.2011, 07:25
отслеживай событие mousedown у списка обрабатывай в нем перенос текста в input, и отмени в нем на время событие onblur у поля над которым делаешь манипуляции и после отдай фокус обратно полю ввода и верни событие onblur ну а в конце запрещай дальнейшее всплытие событий.

ApD
09.08.2011, 15:48
Так в том то и проблема, что события в списке не происходят, потому как onblur у поля ввода наступает быстрее, чем onclick у списка. В итоге при нажатии кнопки список исчезает до клика на списке. Если убирать скрытие списка по потери фокуса, то при переходе между полями Tab`ом список вообще не исчезает.

devote
09.08.2011, 15:56
говорю же про mousedown а не про click это разные вещи

ApD
09.08.2011, 16:04
Всё заработало, большое спасибо. Надо то было всего-лишь заменить onclick на onmousedown. :)

Единственный вопрос, чтоб больше на наступать на эти грабли, как всё-таки определить последовательность наступления событий, "на глаз" и методом экспериментов? Или где-нибудь можно про это почитать?

devote
09.08.2011, 16:21
"на глаз" и методом экспериментов?
тока так=) Это можно сделать но не во всех браузерах увы

ApD
09.08.2011, 16:42
Ну чтож, буду впредь умнее :) большое спасибо.