Il modulo jQgrid contiene diverse caselle di completamento automatico jQueryUI.come verificare se la casella a discesa Completamento automatico jqueryUI era aperta
Nel gestore di eventi keydown La chiave di Esc deve essere elaborata solo se la casella di riepilogo a discesa automatica non è aperta. Se il menu a tendina di completamento automatico è aperto, Esc premere shoult esegue solo l'azione predefinita (chiusura a discesa e annullamento della selezione).
Come verificare se il menu a discesa di completamento automatico è stato aperto? Può verificare se nel riquadro del documento è stata aperta una casella di completamento automatico.
jQuery.extend(jQuery.jgrid.edit, {
beforeShowForm: function ($form) {
var gridIdEncoded = $.jgrid.jqID($form[0].id.substring(8));
$("#editmod" + gridIdEncoded).bind('keydown.formEvent', function (e) {
if (e.which === 27) {
// Todo: How invoke click only if any autocomplete dropdown is not opened
$("#TblGrid_" + gridIdEncoded + "_2 #cData").trigger("click");
return false;
}
});
}
});
Aggiornamento
ho cercato risposta Dr. Molle utilizzando
if (e.which === 27) {
alert($('.ui-autocomplete.ui-widget:visible').length);
if ($('.ui-autocomplete.ui-widget:visible').length != 0)
// dropdown is open, allow default behaviour
return;
ma $. ('Ui-autocomplete.ui-widget. Visibile') lunghezza è 0 se esc viene premuto (è 1 se viene premuto un altro tasto e il menu a tendina è aperto). Sembra che causare cause Esc causa il comportamento di default del completamento automatico per prima cosa chiude il menu a discesa. Solo dopo questo il mio gestore è executud che non trova che il dropdown sia eseguito.
Come risolvere il problema?
Non capisco questa risposta. Questo blocca la chiusura automatica del dropdown. Dovrei usare questo add close autocomplete manualmente nel metodo 'keydown.formEvent'? Quale codice dovrebbe essere usato per chiudere il menu a discesa? – Andrus