Правильно написать событие 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, время: 01:23. |