Uso: activo en lugar de: desplace el mouse para que se aplique CSS mientras el botón del mouse esté presionado.
No creo que la prevención del desenfoque haga todo lo que quiera, ya que si el usuario hace clic en la entrada, entonces en el div, y en otro lugar de la página, el div se mantendrá. Puedo pensar en algunas opciones diferentes, cada una con sus propios escollos. Éste se comportará correctamente mientras el usuario permanece dentro de la página, pero dejará el div que muestra si el usuario se mueve a la barra de direcciones:
$("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/
Si no es necesario para apoyar Internet Explorer 7, entonces usted puede hacer esto utilizando sólo CSS (y funciona exactamente como se esperaba en cualquier navegador moderno, incluyendo IE8):
#suggest {
display: none;
}
#name:focus + #suggest, #suggest:focus {
border: none;
display: block;
}
Tenga en cuenta que usted necesita para poner un índice de tabulación en el div para el método de CSS para trabajar :
<div id="suggest" tabindex="-1">
jsFiddle: http://jsfiddle.net/nbYnt/1/
Por último, se puede errar en el lado de tener el div desaparecer mediante la combinación de JavaScript con CSS (esto funciona en IE7):
#suggest:hover {
display: block !important;
}
$("#name").focus(function() {
$("#suggest").show();
}).blur(function() {
$("#suggest").hide();
});
El problema con este método es que después de hacer clic en el div, simplemente alejando el mouse hará que el div desaparezca.
jsFiddle: http://jsfiddle.net/nbYnt/4/
CHICOS ESTE ES GENIUS usted parece ser la única persona en el mundo que notó que el atributo 'no seleccionable' evita que el objetivo mousedown robe el foco en IE <9. Simplificación: en lugar de agregar el atributo a cada elemento, puede establecer la propiedad en el mousedown, p. Ej. 'onmousedown =" event.target.unselectable = true; return false'. http://jsbin.com/yagekiji/1/ –
Briliant. Esto resolvió mi problema fácilmente, gracias @nameoutname! – brad
@Han ¡Tu comentario es excelente! – user1447420