Правильно написать событие focusout
У меня есть задача, в которой нужно показывать/удалять блок при установке/снятии фокуса в поле формы. Ну, как подсказки на яндексе, но с тем отличием, что на яндексе в подсказке ссылки, и при клике на них пользователь сразу переходит по ним. А у меня при клике на ссылку текст лишь передаётся в поле и пользователь работает с формой дальше.
К сожалению, если я применяю такой код который расположен ниже, то блок исчезает, а значение ссылки в поле не попадает. :( Подскажите, пожалуйста, как мне написать функцию, чтобы focusout работал, но не когда я кликаю по ссылкам в блоке. $('#field').live("focusout", function() {$('#list').remove(); }); |
Может так:
<div class="field_blok"> <div class="field"> <input type="text" class="field" /> </div> <div class="field_list"> <div>Строка 1</div> <div>Строка 2</div> <div>Строка 3</div> </div> </div> var field_over=false; // наведен ли курсор на input или список var list_vis_hid=function () { if (field_over) // Если мышь наведена на field или field_list, то показываем { $(".field_list").show(); } else // Если нет, то скрываем { $(".field_list").hide(); } }; $(document).ready(function () { $(document).click(list_vis_hid); $(".field_blok").hover(function () { field_over=true; }, function () { field_over=false; }); $(".field").blur(list_vis_hid); }); |
Спасибо, это работает.
Правда я не ожидал, что так много кода будет. Думал, раз jquery, то смогу парой строк обойтись. Вообще, заметил, что код который пишут в примерах на том же jqueryAPI сильно отличается от того что в действительности можно найти например в исходниках сайтов. |
возможно есть способ попроще, очень даже вероятно что есть куча плагинов, но мне в голову пришел этот
|
Часовой пояс GMT +3, время: 00:22. |