There are two elements in play:
$(\'#myInput\') // an input field for search
$(\'#myList\') // a list to display search results
I want to h
I've faced with the exact same problem, so this is how I solved it.
I came up with the fact that blur()
fires earlier than click()
.
So I've tried to change click()
to mousedown()
and found out that mousedown()
fires before blur()
.
And to imitate click()
you'll have to fire mousedown()
and then mouseup()
So in your case I would do something like this:
var click_in_process = false; // global
$('#myList').mousedown(function() {
click_in_process = true;
});
$('#myList').mouseup(function() {
click_in_process = false;
$('#myInput').focus();
// a code of $('#myList') clicking event
});
$('#myInput').blur(function() {
if(!click_in_process) {
$('#myList').hide();
// a code of what you want to happen after you really left $('#myInput')
}
});
Demo / example: http://jsfiddle.net/bbrh4/
Hope it helps!