手动(重新)插入两个datepicker字段的jquery datepicker值

时间:2012-11-14 23:00:20

标签: jquery jquery-ui-datepicker

我的datepicker文件中有很多事情要做,以完成一些任务。 1.)我需要能够阻止选择日期或周末(代码不包含在下面,因为它有效) 2.)我需要在每个字段上设置最小和最大日期,以确保最终用户不能选择比开始日期少3天的任何内容(见下文)

我的问题是,我的网站允许访问者返回他们选择日期的页面,并在必要时更改它们以延长或缩短他们的住宿时间。但是当我回来时,我似乎无法正确填充字段,以便我的最小/最大日期规则保持不变。如何在下面修改我的代码,以确保在(重新)插入值时保留我的最小/最大规则。

//CORE DATEPICKER FUNCTION
$(document).ready(function () {
$.datepicker.setDefaults({dateFormat: 'mm/dd/yy',minDate: +3,maxDate: "1Y +3D",changeMonth: true,firstDay: 1,changeYear: true,numberOfMonths: 2,constrainInput:true,beforeShowDay:nationalDays,});

$('#datepicker_start').datepicker({
            onSelect: function(selectedDate) {
    var minDate = $(this).datepicker('getDate');
    if (minDate) {minDate.setDate(minDate.getDate() + 3);}//min nights required
    $('#datepicker_end').datepicker('option', 'minDate', minDate || 1);
    days();
}}).val('12/11/2012');
$('#datepicker_end').datepicker({minDate: 1, onSelect: function(selectedDate) {
    var maxDate = $(this).datepicker('getDate');    
    if (maxDate) {maxDate.setDate(maxDate.getDate() - 1);}
    $('#datepicker_start').datepicker('option', 'maxDate', maxDate); // Date - 1    
    days();
}}).val('12/15/2012');
    $('#datepicker_start,#datepicker_end').change()
        });

1 个答案:

答案 0 :(得分:1)

基本上,您需要能够运行与onSelect选项中相同的代码。通过将该代码包装在单独的函数中,您可以在页面加载时以及onSelect处理程序中调用该函数。

function setEndMin(){
     var minDate = $('#datepicker_start').datepicker('getDate');  
        if (minDate) {
            minDate.setDate(minDate.getDate() + 3);
        } //min nights requires
        $('#datepicker_end').datepicker('option', 'minDate', minDate || 1);

}

$('#datepicker_start').val('12/11/2012').datepicker({       
    onSelect: function(selectedDate) {
       setEndMin();
    }
});
/* after create both pickers can process  min/max*/
setEndMin()

DEMO:http://jsfiddle.net/XtS9B/4/