$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;
}
Problema Sommario:
- AJAX funziona bene, ottengo tutte le voci correttamente nel menu di completamento automatico.
- Sono in grado di utilizzare le frecce su/giù per selezionare le voci di menu e una volta premuto Invio, selezionare l'evento viene generato correttamente e viene visualizzato il messaggio della console.
- Posso mettere a fuoco con successo le voci del menu ui e catturare il mouse sugli eventi per modificare il valore del testo di input.
- Non riesco a cliccare sulla voce di menu e sparare a un evento selezionato. quando clicco su una voce di menu, il messaggio della console non viene mai visualizzato.
- È come se l'evento click stia chiudendo il menu e chiudendolo anziché effettivamente attivare un evento selezionato. Qualche idea su come superare questo problema?
- Ho provato "appendTo: $ this" al divisore padre dell'input, quindi il clic del mouse funziona correttamente! - selezionare l'evento viene generato e il messaggio della console viene visualizzato correttamente. Ma non è quello che voglio dal momento che il menu è aggiunto all'interno del div padre che distorce l'interfaccia utente poiché probabilmente condividono lo stesso z-index. Anche se cambio lo z-index in un numero higehr in questo caso, non è stato di grande aiuto. Quindi sto cercando una soluzione in cui io non debba utilizzare appendTo se possibile.
Ho trovato varie altre domande nel ballpark, ma nessuna di queste sembra rispondere alla mia domanda.
jQuery Autocomplete - Left Mouse Click not firing Select event
jQuery UI autocomplete select event not working with mouse click
Grazie!
questo sta per essere davvero difficile da ricreare e risolvere a meno che non si può creare un esempio del problema su http://jsfiddle.net/o pubblica un link a un sito esterno .... – ManseUK
Grazie per il suggerimento. Durante il processo di firebuging del problema, ho scoperto che l'evento 'blur' veniva chiamato prima della selezione del mouse sul menu di completamento automatico. Una volta che ho cambiato la logica intorno a questo per gestire entrambi questi eventi in un ordine particolare, selezionare ora funziona tramite clic del mouse. – rajivRaja
@txciggy: puoi descrivere esattamente come hai "cambiato la logica intorno a questo per gestire entrambi questi eventi in un ordine particolare"? Mi sto imbattendo in questo problema e la mia conoscenza della gestione degli eventi in JS non è ancora abbastanza buona per farmelo capire da solo. grazie –