2011-10-10 37 views
20

Estoy tratando de deshabilitar todas las fechas en un datepicker y solo habilitar las fechas que están en una matriz. Este es el código que tengo hasta el momento http://jsfiddle.net/peter/yXMKC/ el problema es que solo el 14 de mayo aparece como habilitado. Todos los demás están deshabilitados. ¿Algunas ideas?jQuery UI Datepicker habilitar solo días específicos en el conjunto

var availableDates = ["9-5-2011","14-5-2011","15-5-2011"]; 

function available(date) { 
    dmy = date.getDate() + "-" + (date.getMonth()+1) + "-" + date.getFullYear(); 
    if ($.inArray(dmy, availableDates) == 1) { 
    return [true, "","Available"]; 
    } else { 
    return [false,"","unAvailable"]; 
    } 
} 

$('#date').datepicker({ beforeShowDay: available }); 
+0

'$ .inArray' devolverá la posición del valor de la matriz (comienza en 0), si el valor no está en la matriz, devolverá' -1' – Xieranmaya

Respuesta

43

$ .inArray (DMY, availableDates) devuelve el índice del elemento, por lo que cuando se compara con 1 sólo se emparejará 14-5-2011. Verifique que no sea igual a -1. Deberia trabajar.

violín - http://jsfiddle.net/yXMKC/4/

var availableDates = ["9-5-2011","14-5-2011","15-5-2011"]; 

function available(date) { 
    dmy = date.getDate() + "-" + (date.getMonth()+1) + "-" + date.getFullYear(); 
    console.log(dmy+' : '+($.inArray(dmy, availableDates))); 
    if ($.inArray(dmy, availableDates) != -1) { 
    return [true, "","Available"]; 
    } else { 
    return [false,"","unAvailable"]; 
    } 
} 
+1

Quiero preguntarle si agregué otra fecha, decir "22-10-2014" y otras fechas, no funcionará. Mostrará solo la fecha polilla seleccionada cómo manejar este –

+0

¿Cómo puedo obtener este formato MM/DD/YYYY? – Si8

Cuestiones relacionadas