Реализовал вот так.
<a id="new-ref" href="#">текст</a>
<div id="div-test">
<input id="login" type="text">
<input id="password" type="text">
</div>
Код:
|
#div-test{
display:none;
width:400px;
border:1px solid #000;
padding:20px;
} |
$(function(){
$('#new-ref').mouseenter(function(){ // Навели на ссылку?
$( "#div-test" ).show(); // Показываем блок
});
$("#new-ref").mouseleave(function(event ){ // курсор ушел с ссылки?
event = event || window.event // Не знаю что тут происходит
var relTarg = event.relatedTarget || event.toElement // Определяем куда курсор ушел
if (relTarg.id != 'div-test')
{
if ($("input[id='login']").val().length != 0) return; // есть текст в input? -> return
$( "#div-test" ).hide(); // Скрываем блок
}
});
$("#div-test").mouseleave(function(event ){ // курсор ушел с блока?
event = event || window.event // Не знаю что тут происходит
var relTarg = event.relatedTarget || event.toElement // Определяем куда курсор ушел
if (relTarg.id != 'new-ref')
{
if ($("input[id='login']").val().length != 0) return; // есть текст в input? -> return
$( "#div-test" ).hide(); // Скрываем блок
}
});
$(document).click(function(e){ // Функция скрывает элемент если произошёл клик в не поля #div-test
if ($(e.target).closest('#div-test').length) return; // Не знаю что тут происходит
$('#div-test').hide(); // Скрываем блок
e.stopPropagation(); // Не знаю что тут происходит
});
});
Насколько это правильно?