Hola, gracias nuevamente.
Lo del setTimeOut no es mala idea, pero de hecho preferiría que sea el "plan B", tu 2º idea de la del foco no acabo de comprenderla.
A continuación pego un ejemplito con mi problema simplificado al máximo:
Código:
<html>
<head>
<style type="text/css">
#lista
{
background-color:#EAEAEA;
position:absolute;
width:120px;
top:100px;
left:100px;
display:none;
}
.resaltado
{
background-color:#FFFFFF;
cursor:pointer;
}
.normal
{
background-color:#EAEAEA;
}
</style>
<script language="javascript" type="text/javascript">
function rellenaCampo()
{
campo=document.getElementById("input_2");
div=document.getElementById("lista");
valor=campo.value;
if(valor.length>=2) div.style.display="block";
}
</script>
</head>
<body>
<input onBlur="document.getElementById('lista').style.display='none'" onKeyUp="rellenaCampo()" type="text" id="input_2" />
<div id="lista">
<div id="1" onClick="document.getElementById('input_2').value=this.innerHTML; document.getElementById('lista').style.display='none'" onMouseOut="this.className='normal'" onMouseOver="this.className='resaltado'">Elemento 1</div>
<div id="2" onClick="document.getElementById('input_2').value=this.innerHTML; document.getElementById('lista').style.display='none'" onMouseOut="this.className='normal'" onMouseOver="this.className='resaltado'">Elemento 2</div>
</div>
</body>
</html>
Ahí se ve claramente lo que tu dices, primero se ejecuta el onBlur y luego el onClick, y si le saco el onBlur la lista quedaría eternamente en pantalla hasta que se cliquee una opción, y si le saco el onClick no puedo rellenar en input con la opción elegida.
Espero no abusar de su paciencia.
Un saludo.