Использование: активно вместо: наведите курсор на CSS, чтобы применить его, когда кнопка мыши нажата.
Я не думаю, что предотвращение размытия приведет к тому, что вы хотите, поскольку, если пользователь нажимает наввод, затем в div, затем в другом месте на странице, затем div останется.Я могу придумать несколько разных вариантов, каждый из которых имеет свои подводные камни.Это будет вести себя корректно, пока пользователь остается на странице, но не отображает div, если пользователь переходит к адресной строке:
$("html").on("focus", "#name", function() {
$("#suggest").show();
}).mousedown(function() {
$("#suggest").hide();
}).on("mousedown", "#name, #suggest", function(e) {
e.stopPropagation();
});
jsFiddle: http://jsfiddle.net/nbYnt/2/
Если выне нужно поддерживать IE7, тогда вы можете сделать это, используя только CSS (и он работает точно так же, как и ожидалось в любом современном браузере, включая IE8):
#suggest {
display: none;
}
#name:focus + #suggest, #suggest:focus {
border: none;
display: block;
}
Обратите внимание, что вам нужно поместить tabindex наdiv для метода CSS для работы:
<div id="suggest" tabindex="-1">
jsFiddle: http://jsfiddle.net/nbYnt/1/
Наконец, вы можете ошибиться, если div исчезнет, объединив JavaScript с CSS (это работаетв IE7):
#suggest:hover {
display: block !important;
}
$("#name").focus(function() {
$("#suggest").show();
}).blur(function() {
$("#suggest").hide();
});
Проблема с этим методом заключается в том, что после нажатия на div простое перемещение мыши приведет к исчезновению div.
jsFiddle: http://jsfiddle.net/nbYnt/4/