jquery-ui - ejemplos - jquery ui datepicker time
Compruebe si el selector de fechas está abierto (5)
Tengo un campo con un selector de fechas. Quiero saber si está abierto. Lo he intentado con:
$("#filter_date").datepicker( "widget" ).is(":visible")
Pero vuelve siempre cierto.
¿Cómo puedo comprobar si está abierto?
Acceda al atributo de estilo del selector de fechas y compárelo con un estilo cuando el selector de fechas está oculto (pantalla: ninguno):
var datePickerStyle = $(''.datepicker'').attr(''style'');
var noneStyle = ''display: none;'';
if(datePickerStyle.indexOf(noneStyle) != -1){
console.log(''shown'');
} else {
console.log(''not shown'');
}
Desde lo alto de mi cabeza, podría pensar en usar los eventos beforeShow y onClose definidos para el control del beforeShow para alternar una clase (o una bandera) en algún lugar, y verificar la presencia de los mismos para determinar si el control del beforeShow está abierto o no.
Esto podría ser un posible error en el pasado. Ahora esta solucion
$("#filter_date").datepicker( "widget" ).is(":visible")
funciona perfectamente
Simplemente establece:
#ui-datepicker-div { display: none; }
en su archivo CSS y su código:
$("#filter_date").datepicker( "widget" ).is(":visible")
funcionará correctamente!
var isCalendarVisible;
$(".datepicker).datepicker().on("show", function () {
isCalendarVisible = true;
}).on("hide", function () {
isCalendarVisible = false;
});
He utilizado este enfoque para alternar el selector de fecha al hacer clic en un botón. isCalendarVisible
que se actualiza en ''show'' & ''hide'' de datepicker en consecuencia. Verifico el valor de ''isCalendarVisible'' para abrirlo o cerrarlo manualmente.
function toggleCalendar() {
if (isCalendarVisible) {
$(".datepicker .add-on").datepicker("hide");
} else {
$(".datepicker .add-on").datepicker("show");
}
}