Saltar al contenido

JQuery DatePicker y beforeShowDay

Estate atento porque en este post vas a encontrar el arreglo que buscas.

Solución:

Según la API Datepicker de jQueryUI,

ingrese la descripción de la imagen aquí

Esto explica por qué

$("#dateRetrait").datepicker(beforeShowDay: function(d) 
        console.log("bsd");
        alert("bsd");
    );

No funciona.

También noté que estás llamando. .datepicker() varias veces y cada vez le estás dando diferentes parámetros.

En lugar de:

$("#dateRetrait").datepicker();

$("#dateRetrait").datepicker(beforeShowDay: function(d) 
        console.log("bsd");
        alert("bsd");
    );

$('#dateRetrait').datepicker('option', 'minDate', new Date());

$("#dateRetrait").datepicker("option","dateFormat", 'dd-mm-yy');

Intenta hacer esto:

$("#dateRetrait").datepicker(
    dateFormat: 'dd-mm-yy',
    minDate: new Date(), 
    beforeShowDay: function(d) 
        var dmy = (d.getMonth()+1); 
        if(d.getMonth()<9) 
            dmy="0"+dmy; 
        dmy+= "-"; 

        if(d.getDate()<10) dmy+="0"; 
            dmy+=d.getDate() + "-" + d.getFullYear(); 

        console.log(dmy+' : '+($.inArray(dmy, availableDates)));

        if ($.inArray(dmy, availableDates) != -1) 
            return [true, "","Available"]; 
         else
             return [false,"","unAvailable"]; 
        
    
    );

También le proporcioné una demostración: http://jsfiddle.net/yTMwu/18/ . ¡Espero que esto ayude!

La fecha que se pasa a la función de devolución de llamada es una fecha y hora completa. Entonces, si desea que se compare con una fecha corta string, uno de ellos debe ser convertido. Este fragmento del beforeShowDay attribute parte del selector de fecha demuestra que es necesaria una conversión. Aquí simplemente deshabilito una sola fecha en el calendario para probar el punto.

                beforeShowDay: function(date) 
                var dd = date.getDate();
                var mm = date.getMonth()+1; //January is 0!
                var yyyy = date.getFullYear();
                var shortDate = mm+'/'+dd+'/'+yyyy;
                var test = "12/30/2014";
                if (shortDate == test) 
                    return [false, "" ];
                 else 
                    return [true, "" ];
                
            

Dom dio una buena explicación. Y me gustaría agregar más código acortado:

Si usted tiene array de fechas disponibles en formato: 0000-00-00 (aaaa-mm-dd)

var availableDates = ["2020-01-05", "2020-01-10", "2020-01-14"];

$("#dateRetrait").datepicker(
    dateFormat: 'dd-mm-yy',
    minDate: new Date(), 
    beforeShowDay: function(d)         
        var year = d.getFullYear(),
            month = ("0" + (d.getMonth() + 1)).slice(-2),
            day = ("0" + (d.getDate())).slice(-2);

        var formatted = year + '-' + month + '-' + day;

        if ($.inArray(formatted, availableDates) != -1) 
            return [true, "","Available"]; 
         else
            return [false,"","unAvailable"]; 
        
    
);

antes del ShowDay - funciona cada vez, antes del día de procesamiento))

$.inArray - encontrar valor en array (-1 si no hay valor)

En esta solución, puede hacer fechas de paradasolo cambia de línea:

if ($.inArray(formatted, availableDates) != -1) {

para

if ($.inArray(formatted, availableDates) == -1) {

Reseñas y valoraciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *