jquery UI - 将日期添加到所选日期

时间:2012-03-02 15:43:31

标签: jquery jquery-ui datepicker

这似乎很简单,但我无法解决它,我真的需要这个。 如何通过SelectedDate事件向所选日期添加日期?

我需要对2个日期选择器执行日期范围限制。一旦用户设置了一个日期选择器,另一个只需要允许日期等于第一个日期选择器的选定日期加上一个月。

示例:如果我在第一个日历上设置“3月3日”,则第二个日历必须只允许大于4月3日的日期。

到目前为止,我只能获得相同的选定日期或我通过$('#dtpicker').datepicker( "setDate" , '+1m');设置的日期。我尝试了jquery-ui文档示例,但没有。

2 个答案:

答案 0 :(得分:5)

这应该适合你:

var plus_one_month =  '';
var minus_one_month =  '';
$("#from").datepicker({
    beforeShow: function() {
        if($("#to").val() != '') { 
            minus_one_month =  new Date($("#to").val());
            minus_one_month.setMonth(minus_one_month.getMonth() - 1);
        } else {
            minus_one_month =  '';
        }
        return {
            minDate: minus_one_month,
            maxDate: new Date($("#to").val())
        }
    }
});

$("#to").datepicker({
    beforeShow: function() {
        if($("#from").val() != '') { 
            plus_one_month =  new Date($("#from").val());
            plus_one_month.setMonth(plus_one_month.getMonth() + 1);
        } else {
            plus_one_month =  '';
        }
        return {
            minDate: new Date($("#from").val()),
            maxDate: plus_one_month
        }
    }
});

正如您所见here

答案 1 :(得分:1)

我在两个日期选择器上实现了类似的功能。

function handleDateChange() {
    var dateStart = $('#datepicker-startdate').datepicker("getDate"), 
        dateEnd = $('#datepicker-enddate').datepicker("getDate");
    if (dateStart !== null) {
        dateStart.setDate(dateStart.getDate() + 1);
        $('#datepicker-enddate').datepicker('option', 'minDate', dateStart);
    }
    if (dateEnd !== null) {
        dateEnd.setDate(dateEnd.getDate() - 1);
        $('#datepicker-enddate').datepicker('option', 'maxDate', dateEnd);
    }
 }

在datepickers的onSelect处理程序中使用此方法(作为init选项):

$(/*your datepicker selector*/).datepicker({
    // ... other init options
    onSelect : function(dateText, inst) {handleDateChange();}
});

我认为这与你需要的相似,如果没有,那么它肯定会让你走上正轨。