$this.find('input').autocomplete({
source: "/autocomplete_tc_testcasename",
minLength: 2,
focus: function(e,ui){
$(this).val(ui.item.label);
return false;
},
select: function(e, ui) {
console.log("Selected: "+ui.item.value);
}
});
CSS:
.ui-autocomplete {
max-height: 200px;
overflow-y: auto;
padding: 5px;
}
.ui-menu {
list-style: none;
background-color: #FFFFEE;
width: 50%;
padding: 0px;
border-bottom: 1px solid #DDDDDD;
border-radius: 6px;
-webkit-box-shadow: 0 8px 6px -6px black;
-moz-box-shadow: 0 0px 0px -0px black;
box-shadow: 0px 2px 2px 0px #999999;
}
.ui-menu .ui-menu {
}
.ui-menu .ui-menu-item {
color: #990000;
font-family:"Verdana";
font-size: 12px;
border-top: 3px solid #DDDDDD;
background-color: #FFFFFF;
padding: 10px;
}
Resumen del problema:
- AJAX funciona bien, obtengo todas las entradas correctamente en el menú de autocompletar.
- Puedo usar las flechas de las teclas arriba/abajo para seleccionar las opciones del menú y una vez que presiono regresar, seleccionar evento se dispara correctamente y se muestra el mensaje de la consola.
- Me puedo enfocar en ui-menu-items con éxito y capturar el mouse sobre eventos para cambiar el valor del texto de entrada.
- Parece que no puedo hacer clic en el elemento del menú y activar un evento seleccionado. es decir, cuando hago clic en un elemento del menú, el mensaje de la consola nunca se muestra.
- Es como si el evento click estuviera descartando el menú y cerrándolo en lugar de disparar un evento seleccionado. ¿Alguna idea sobre cómo superar este problema?
- Probé "appendTo: $ this" en lugar de la div principal de entrada, y luego el clic del mouse funciona bien! - seleccionar evento se dispara y el mensaje de la consola se muestra con éxito. Pero eso no es lo que quiero ya que el menú se agrega dentro del div principal que distorsiona la UI ya que probablemente comparten el mismo índice z. Incluso si cambio el índice Z a un número Higehr en este caso, no fue de mucha ayuda. Así que estoy buscando una solución donde no 'tenga' que usar appendTo si es posible.
Encontré varias otras preguntas en el estadio de béisbol, pero ninguna de estas parece resolver mi pregunta.
jQuery Autocomplete - Left Mouse Click not firing Select event
jQuery UI autocomplete select event not working with mouse click
Gracias!
Esto va a ser muy difícil de recrear y resolver a menos que usted puede crear un ejemplo de su problema en http://jsfiddle.net/o publicar un enlace a un sitio externo .... – ManseUK
Gracias por la sugerencia. En el proceso de detectar el problema, descubrí que se llamaba al evento 'desenfoque' antes de hacer clic con el mouse en el menú de autocompletar. Una vez que cambié la lógica alrededor de esto para manejar ambos eventos en un orden particular, seleccione ahora funciona con un clic del mouse. – rajivRaja
@txciggy: ¿puede describir exactamente cómo "cambió la lógica al respecto para manejar ambos eventos en un orden particular"? Me estoy encontrando con este problema y mi conocimiento del manejo de eventos en JS aún no es lo suficientemente bueno como para que pueda resolverlo yo mismo. gracias –