6

Estoy usando jquery UI datepicker en un gran proyecto y ahora me doy cuenta de que tendré que permitir solo ciertos días de la semana en algunas áreas. Leí su documentación y no encontré nada al respecto ... Sé que hay algunos scripts de datapickers para jq que pueden hacer esto, pero no quiero usar ningún script adicional para esto si es posible. ¿Alguien sabe alguna solución para esto? Tal vez me malinterpreten algo en su documentación?jQuery UI Datepicker - permitir solo ciertos días de la semana

NOTA: ejemplo de comportamiento deseado: http://codeasp.net/blogs/raghav_khunger/microsoft-net/1088/jquery-datepicker-disable-specific-weekdays

Gracias de antemano por la ayuda, Saludos Pedro

+3

el enlace informados contiene la respuesta completa a la pregunta .. que –

+1

@Gaby: Y una demo! –

+0

@Andrew, yeap ... bastante heterosexual. –

Respuesta

2

A partir de los documentos:

beforeShowDay: la función toma una fecha como parámetro y debe devolver una matriz con [0] igual a verdadero/falso que indica si esta fecha es seleccionable, [1] igual a un nombre (s) de clase CSS o '' para la presentación predeterminada, y [2] una información emergente opcional emergente para esta fecha. Se requiere para cada día en el selector de fecha antes de que se muestre.

Para ver un ejemplo, consulte aquí:

http://codeasp.net/blogs/raghav_khunger/microsoft-net/1088/jquery-datepicker-disable-specific-weekdays

+0

Lo encontré en los comentarios del blog que se veía un poco mejor http://jquerybyexample.blogspot.com/2010/07/disable-specific-days-in-jquery.html –

7
$(".datepicker.future").datepicker('option','beforeShowDay',function(date){ 
    var td = date.getDay(); 
    var ret = [(date.getDay() != 0 && date.getDay() != 6),'',(td != 'Sat' && td != 'Sun')?'':'only on workday']; 
    return ret; 
}); 
+0

A la variable td se le asigna un valor entero pero es siendo comparado con cadenas. Creo que querías esto: var td = ['Sol', 'Mon', 'Mar', 'Mie', 'Jue', 'Vie', 'Sáb'] [fecha.getDay()]; – primehalo

5

@Jan Thomas se olvidó de agregar la variable td. El código correcto es:

$(".datepicker.future").datepicker('option','beforeShowDay',function(date){ 
    var td = date.getDay(); 
    var ret = [(date.getDay() != 0 && date.getDay() != 6),'',(td != 'Sat' && td != 'Sun')?'':'only on workday']; 
    return ret; 
}); 
+1

¿puede td estar "sat" si es una representación NUMÉRICA del día dado? Un error o no lo entiendo – Tyler

+0

La variable td tiene asignado un valor entero pero se está comparando con cadenas. Creo que querías esto: var td = ['Sol', 'Mon', 'Mar', 'Mie', 'Jue', 'Vie', 'Sáb'] [fecha.getDay()]; – primehalo

3
$('selector').datepicker({ 
beforeShowDay: $.datepicker.noWeekends // disable weekends 
}); 
0

respuesta de Jean Mallet (beforeShowDay: $.datepicker.noWeekends) es simple y elegante.

Sin embargo, si ya está llamando a una función usando beforeShowDay (como yo estaba en mi caso), aquí puede deshabilitar ciertos días de la semana (en este caso, domingo y sábado), encadenados junto con el resto de su función:

beforeShowDay: function (date) { 

    /* your other function code here */ 

    if (date.getDay() > 0 && date.getDay() < 6) { 
     return [true, '']; 
    } else { 
     return [false, '']; 
    } 
} 

enter image description here

Cuestiones relacionadas