Jquery UI datepicker限制选择[工作日]

时间:2012-05-14 13:53:12

标签: jquery datepicker

已解决:http://jsfiddle.net/YV34P/5/

我正在尝试设置datepicker以将选择范围限制为5天。

这很好并且有效,但是今天的问题必须是'工作日',没有星期日和星期六,这意味着如果我选择5月18日星期五,我的限制将是5月24日星期四。

有什么想法吗?我有以下代码:

$('.datepicker').datepicker({
            dayNames: ["Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sábado"],
            dayNamesMin: ["Do", "Lu", "Ma", "Mi", "Ju", "Vi", "Sa"],
            monthNames: ["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],
            //dateFormat: "DD, dd MM yy",
            //altFormat: "DD, dd MM yy",
            dateFormat: "dd M yy",
            showAnim: "drop",
            beforeShow: LimitaRango,
            beforeShowDay: $.datepicker.noWeekends
    });

function LimitaRango(input){
    if (input.id == 'FechaHasta'){
        var minDate = new Date($('#FechaDesde').val());
        minDate.setDate(minDate.getDate() + 1);
        var maxDate = new Date($('#FechaDesde').val());
        maxDate.setDate(maxDate.getDate() + 5);
        return {
            minDate: minDate,
            maxDate: maxDate
            };
        }
}

这个HTML:

<tr>
      <td>Fecha Desde:</td>
      <td colspan="2"><input type="text" name="FechaDesde" size="40" class="datepicker" id="FechaDesde"></td>
</tr>    
<tr>
      <td>Fecha Hasta:</td>
      <td colspan="2"><input type="text" name="FechaHasta" size="40" class="datepicker" id="FechaHasta"></td>
    </tr>

PS:非常感谢您给予的帮助,但问题在于周末才能识别。现在,我有这个工作,但如果用户选择“星期五”,我的目标是将他的选择限制到星期四,但现在,使用此代码,它仅限于“星期二”,因为周末计入“5天” “从选定的开始日开始。

3 个答案:

答案 0 :(得分:2)

您可以使用以下代码禁用周末:

$("#element").datepicker(
    {
        beforeShowDay: $.datepicker.noWeekends
    }
);

编辑:要禁用指定的天数,请检查以下内容: Can the jQuery UI Datepicker be made to disable Saturdays and Sundays (and holidays)?

答案 1 :(得分:2)

你想要的是从今天到未来六天的任何时间。因此,您需要设置选项maxDate。

var maxd = Date();
maxd.setTime( maxd.getTime() + (1000 * 3600 * 24 * 6) );
$('.datepicker').datepicker({
    ... // existing options
    maxDate: maxd,
});

答案 2 :(得分:1)

使用 beforeShowDay 事件来限制日期选择性。如果此函数返回false,则该日期将不是活动的

beforeShowDay:
function(date) {
    var dayOfWeek = date.getUTCDay();
    if(dayOfWeek ==0 || dayOfWeek ==6) //0= Sunday 6= Saturday
    {
      return false;

    }
    else
    {
      return true;
    }
}

有关详细信息,请参阅http://jqueryui.com/demos/datepicker/#event-beforeShowDayjQuery ui datepicker, get Day of week from onSelect