在jquery datepicker中设置minDate没有任何意义?

时间:2010-05-20 15:42:36

标签: jquery datetime jquery-ui jquery-plugins

我是这样写的。

<script>


$(function() {
                   $('#from').datepicker({
                            defaultDate: "+5d",
                            changeMonth: true,
                            numberOfMonths:1 ,
                            minDate:"+0d",
                            dateFormat: 'DD, MM d, yy',
                            onSelect: function(selectedDate) {
                                    var option = this.id == "from" ? "minDate" : "maxDate";

                                   var instance = $(this).data("datepicker");

                                    var date = $.datepicker.parseDate(instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings);


                                    dates.not(this).datepicker("option", option, date);

                            }
                    });

});

$(function() {
    $('#to').datepicker({
                            defaultDate: "+5d",
                            changeMonth: true,
                            numberOfMonths:1 ,
                            minDate:"+0d",
                            dateFormat: 'DD, MM d, yy',
                            onSelect: function(selectedDate) {
                                    var option = this.id == "from" ? "minDate" : "maxDate";

                                   var instance = $(this).data("datepicker");

                                    var date = $.datepicker.parseDate(instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings);


                                    dates.not(this).datepicker("option", option, date);

                            }
                    });
});

function callme(id){
    var temp1 = "#" + id;
    if(temp1 == "#from"){
        $("#to").unbind();
    }
    else{
        var temp = $("#from").val();
        var msecsInADay = 86400000;
        var startDate = new Date(temp);
        var endDate = new Date(startDate.getTime() + msecsInADay);
        var t = endDate.getDate() + '/' + (endDate.getMonth()+1) + '/' + endDate.getFullYear();

        $('#to').datepicker({minDate: new Date(t)});
        $('#to').datepicker().datepicker("show");
    }
}
</script>


</head>

<body>
     <label>date</label><input  id="from" type="text" onclick="callme(this.id)"/>
    <label>return</label><input id="to" type="text" onclick="callme(this.id)" />


现在我想要的是......
当我选择第一个日期。 [日期之前的“#from”]表示应在日历中禁用 现在当我选择日历日期的第二个日期[表示在“#to”]时应该开始一天加。然后是上一个日期。

但是这里的最短约会没有改变。

提前感谢...

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题(和代码,因为提供的代码比你的规范更多)你需要以下行为:

  1. 如果选择了F中的#from日期,则您应该只能在F中选择大于#to的日期。
  2. T中的日期#to被选中时,T
  3. 中不能选择大于或等于#from的日期

    此代码将执行此操作:

    $(function() {
        $('#from').datepicker({
            defaultDate: '+5d',
            changeMonth: true,
            numberOfMonths:1,
            minDate:'+0d',
            dateFormat: 'DD, MM d, yy',
            onClose: function(dateText, inst) {
                if (dateText !== '') {
                    try {
                        var fromDate = $.datepicker.parseDate(inst.settings.dateFormat, dateText, inst.settings);
                        fromDate.setDate(fromDate.getDate() + 1);
                        $('#to').datepicker('option', 'minDate', fromDate);
                    }
                    catch (err) {
                        console.log(err);
                    }
                }
                else {
                    //If #from is empty, restore the original limit in #to
                    $('#to').datepicker('option', 'minDate', '+0d');
                }
            }
    
        });
    
        $('#to').datepicker({
            defaultDate: '+5d',
            changeMonth: true,
            numberOfMonths:1,
            minDate:'+0d',
            dateFormat: 'DD, MM d, yy',
            onClose: function(dateText, inst) {
                if (dateText !== '') {
                    try {
                        var toDate = $.datepicker.parseDate(inst.settings.dateFormat, dateText, inst.settings);
                        toDate.setDate(toDate.getDate() - 1);
                        $('#from').datepicker('option', 'maxDate', toDate);
                    }
                    catch (err) {
                        console.log(err);
                    }
                }
                else {
                    //If #to is empty, remove the limit in #from
                    $('#from').datepicker('option', 'maxDate', null);
                }
            }
        });
    });
    

    两个onClose函数非常相似,可以推广到一个函数中,但我认为通过这种方式更容易理解这些函数。

    此外,onClick#from中的#to处理程序不再需要。