jQuery UI datepicker范围选择器问题

时间:2014-09-22 07:44:40

标签: javascript jquery jquery-ui date datepicker

this answer的帮助下,使用范围选择器创建了日期选择器 在从“5月1日”到“8月1日”选择日期的时候,用户不能从5月1日以前的日期变更。 在这种情况下是否有任何解决方案,而不是不允许用户浏览日期而不是最小日期。应允许用户使用prev。日期,但有警告或通知他们选择了错误的日期范围。

代码段:credit

$(function() {
    $("#from-datepicker").datepicker({
        dateFormat: "dd-M-yy",
        maxDate: "-1d",
        onClose: function (selectedDate) {             
            // Set 'TO' minDate
            $("#to-datepicker").datepicker("option", "minDate", selectedDate);             

            // Set 'TO' maxDate at 3 months if before yesterday
            var dt = new Date($(this).datepicker("getDate"));
            dt.setMonth(dt.getMonth() + 3);
            if(dt < Date.now()) {
                $("#to-datepicker").datepicker("option", "maxDate", dt);
            }
        }
    });
    $("#to-datepicker").datepicker({
        dateFormat: "dd-M-yy",
        maxDate: "-1d",
        onClose: function (selectedDate) {
            // Set 'FROM' maxDate
            $("#from-datepicker").datepicker("option", "maxDate", selectedDate);

            // Set 'FROM' minDate at 3 months if before yesterday
            var dt = new Date($(this).datepicker("getDate"));
            dt.setMonth(dt.getMonth() - 3);
            if(dt < Date.now()) {
                $("#from-datepicker").datepicker("option", "minDate", dt);
            }
        }
    });
});

http://jsfiddle.net/4Ln0cxpq/

3 个答案:

答案 0 :(得分:1)

JsFiddle

中试试
$(function() {
    $("#from-datepicker").datepicker({
        dateFormat: "dd-M-yy",
        onClose: function (selectedDate) {             
            var dt = new Date($(this).datepicker("getDate"));
            var dtTo = new Date($("#to-datepicker").datepicker("getDate"));

            if($("#to-datepicker").val()!="" && dt > dtTo) {
                $("#from-datepicker").val("");
                alert("selected date greater than 'To' date");
            }
        }
    });
    $("#to-datepicker").datepicker({
        dateFormat: "dd-M-yy",
        onClose: function (selectedDate) {
            var dt = new Date($(this).datepicker("getDate"));
            var dtFrom = new Date($("#from-datepicker").datepicker("getDate"));

            if($("#from-datepicker").val()!="" && dt<dtFrom){
                $("#to-datepicker").val("");
                alert("selected date less than 'From' date");
            }
        }
    });
});

答案 1 :(得分:0)

您的代码设置-3,+3月份来自选定的一个。

试试这个小提琴:JSFiddle

答案 2 :(得分:0)

你可以删除它:

// Set 'TO' minDate
            $("#to-datepicker").datepicker("option", "minDate", selectedDate);  

和此:

 // Set 'FROM' maxDate
            $("#from-datepicker").datepicker("option", "maxDate", selectedDate);

然后添加您的支票,如果FROM大于TO,如果为True,则显示您的自定义通知

DEMO