Selector de fechas de la interfaz de usuario de Jquery. Deshabilitar conjunto de fechas

Resuelto Daniel White asked hace 11 años • 7 respuestas

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?

Daniel White avatar Mar 14 '13 10:03 Daniel White
Aceptado

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

Arun P Johny avatar Mar 14 '2013 03:03 Arun P Johny

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];
    }
});
Tripex avatar Apr 30 '2014 19:04 Tripex

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];
      }
   });
});   
ItsMagic avatar May 09 '2016 10:05 ItsMagic