Tengo un campo con un datepicker. Quiero saber si está abierto. Lo he intentado con:Verificar si datepicker está abierto
$("#filter_date").datepicker("widget").is(":visible")
pero siempre es cierto.
¿Cómo puedo verificar si está abierto?
Tengo un campo con un datepicker. Quiero saber si está abierto. Lo he intentado con:Verificar si datepicker está abierto
$("#filter_date").datepicker("widget").is(":visible")
pero siempre es cierto.
¿Cómo puedo verificar si está abierto?
Esto podría ser un posible error en el pasado. Ahora bien, esta solución
$("#filter_date").datepicker("widget").is(":visible")
funciona perfectamente
De la parte superior de mi cabeza, podría pensar en utilizar los beforeShow y onClose eventos definidos para el control selector de fecha para cambiar una clase (o una bandera) en alguna parte, y la comprobación de la presencia de las cuales para determinar si el control selector de fecha es abierto o no.
Basta con establecer:
#ui-datepicker-div { display: none; }
en su archivo CSS y su código:
$("#filter_date").datepicker("widget").is(":visible")
funcionará correctamente!
Acceso atributo y el estilo del selector de fecha compararlo con un estilo cuando se oculta selector de fechas (display: none):
var datePickerStyle = $('.datepicker').attr('style');
var noneStyle = 'display: none;';
if(datePickerStyle.indexOf(noneStyle) != -1){
console.log('shown');
} else {
console.log('not shown');
}
Este es realmente bueno cuando necesitas probar si el elemento está visible, y ejecutas pruebas en phantomJS (.is (": visible") no funcionó para mí) –
var isCalendarVisible;
$(".datepicker).datepicker().on("show", function() {
isCalendarVisible = true;
}).on("hide", function() {
isCalendarVisible = false;
});
He utilizado este enfoque para la conmutación del selector de fechas en el clic de un botón. isCalendarVisible
actualizándose en 'mostrar' & 'ocultar' 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");
}
}
La primera vez que el marcador de fecha se adjunta a un elemento, es invisible y, sin embargo, visible devuelve verdadero. El elemento aún no tiene el estilo de mostrar ninguno, pero aún está oculto y, desafortunadamente, no se detectó en el código. Aún así, +1. :) – mikong
Ahh, en la primera carga, debe comprobar si está: vacío. – mikong
No funciona para mí. Ambos: empty y: visible siempre devuelven true - antes de la primera vez que se abre el datepicker y siempre después. – AyCabron