Selector de fechas de la interfaz de usuario de Jquery. Deshabilitar conjunto de fechas
He estado intentando buscar una solución a mi problema del selector de fecha de Jquery ui y no tengo suerte. Esto es lo que estoy tratando de hacer...
Tengo una aplicación en la que estoy haciendo PHP complejo para devolver una matriz JSON de fechas que quiero BLOQUEAR del Jquery UI Datepicker. Estoy devolviendo esta matriz:
["2013-03-14","2013-03-15","2013-03-16"]
¿No existe una forma sencilla de decir simplemente: bloquear estas fechas del selector de fechas?
He leído la documentación de la interfaz de usuario y no veo nada que me ayude. ¿Alguien tiene alguna idea?
Puedes usar beforeShowDay para hacer esto.
El siguiente ejemplo desactiva las fechas del 14 de marzo de 2013 al 16 de marzo de 2013.
var dates = ['2013-03-14', '2013-03-15', '2013-03-16'];
$('input').datepicker
({
beforeShowDay: function(date)
{
var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
return [dates.indexOf(string) == -1];
}
});
Demostración: violín
IE 8 no tiene la función indexOf, así que usé jQuery inArray en su lugar.
$('input').datepicker({
beforeShowDay: function(date){
var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
return [$.inArray(string, array) == -1];
}
});
Si también quieres bloquear los domingos (u otros días), así como el conjunto de fechas, uso este código:
jQuery(function($){
var disabledDays = [
"27-4-2016", "25-12-2016", "26-12-2016",
"4-4-2017", "5-4-2017", "6-4-2017", "6-4-2016", "7-4-2017", "8-4-2017", "9-4-2017"
];
//replace these with the id's of your datepickers
$("#id-of-first-datepicker,#id-of-second-datepicker").datepicker({
beforeShowDay: function(date){
var day = date.getDay();
var string = jQuery.datepicker.formatDate('d-m-yy', date);
var isDisabled = ($.inArray(string, disabledDays) != -1);
//day != 0 disables all Sundays
return [day != 0 && !isDisabled];
}
});
});