El formulario jQgrid contiene varios cuadros de autocompletar jQueryUI.cómo comprobar si el cuadro desplegable autocompletar de jqueryUI estaba abierto
In keydown controlador de eventos La tecla de control de la tecla debe procesarse solo si el cuadro desplegable de autocompletar no está abierto. Si el menú desplegable de autocompletar está abierto, Esc presione shoult para realizar su acción predeterminada solamente (menú desplegable de cierre y cancelación de selección).
¿Cómo comprobar si se abrió el menú desplegable de autocompletar? Puede verificar si se abrió cualquier casilla de autocompletar en el cuerpo del documento.
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;
}
});
}
});
actualización
me trataron respuesta Dr. Molle usando
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;
pero $. ('Ui-autocomplete.ui en widgets:. Visible') de longitud es 0 si esc está presionado (es 1 si se pulsa otra tecla y el menú desplegable está abierto). Parece que causar causas de Esc autocompleta el comportamiento predeterminado primero con este menú desplegable. Solo después de esto, mi controlador se ejecuta y no encuentra que se ejecute el menú desplegable.
¿Cómo solucionar esto?
No entiendo esta respuesta. Esto bloquea el cierre del menú desplegable de autocompletar. ¿Debo usar esto para agregar cerrar autocompletar manualmente en el método 'keydown.formEvent'? ¿Qué código debería usarse para cerrar el menú desplegable? – Andrus