jQuery datepicker:限制来自selectedDate的日期

时间:2015-01-05 10:09:17

标签: jquery datepicker jquery-ui-datepicker

我想限制用户的日历以限制日期范围。

例如:如果用户在2014年3月10日选择,则用户不得在2014年6月10日之后选择To。

以下是我制作的代码:

提前致谢。

$(function() {
   $( "#from" ).datepicker({
      maxDate: 0,
      dateFormat : 'dd-mm-yy',
      onClose: function( selectedDate ) {
        $( "#to" ).datepicker( "option", "minDate", selectedDate );
        var date = $(this).datepicker('getDate');
        var maxDate = new Date(date.getMonth() + 3);
        $( "#to" ).datepicker( "option", "maxDate", maxDate );
      }
    });

    $( "#to" ).datepicker({
        maxDate: 0,
        onClose: function( selectedDate ) {
          $( "#from" ).datepicker( "option", "maxDate", selectedDate );
        }
    });
}

3 个答案:

答案 0 :(得分:1)

你可以从From datepicker获得月份,并为To datepicker的maxDate增加3个月。

$("#from").datepicker({
        dateFormat: "dd-M-yy",            
        minDate: 0,
        onSelect: function (date) {
            var date2 = $('#from').datepicker('getDate');
            date2.setMonth(date2.getMonth() + 3);
            $('#to').datepicker('setDate', date2);
            $('#to').datepicker('option', 'maxDate', date2);
        }
    });
    $('#to').datepicker({
        dateFormat: "dd-M-yy",
        onClose: function () {                
            var from = $('#from').datepicker('getDate');
            console.log(from);
            var to = $('#to').datepicker('getDate');
            if (to <= from) {
                var minDate = $('#dt2').datepicker('option', 'minDate');
                $('#from').datepicker('setDate', minDate);
            }
        }
    });

检查这个小提琴:

http://jsfiddle.net/PPSh3/586/

答案 1 :(得分:0)

问题与您使用日期的方式有关。请检查此fiddle

在将日期分配给datepicker的maxDate或minDate选项之前,您必须将日期解析为有效格式:

        var arr = selectedDate.split("-");
        var date = new Date(arr[2] + "-" + arr[1] + "-" + arr[0]);
        var d = date.getDate();
        var m = date.getMonth();
        var y = date.getFullYear();
        var minDate = new Date(y, m + 1, d);
        $("#to").datepicker("option", "minDate", minDate);
        //var date = $(this).datepicker('getDate');
        var maxDate = new Date(y, m + 3, d);
        $("#to").datepicker("option", "maxDate", maxDate);

同样适用于其他日期选择器:

        var arr = selectedDate.split("-");
        var date = new Date(arr[2] + "-" + arr[1] + "-" + arr[0]);
        $("#from").datepicker("option", "maxDate", date);

希望它有所帮助。

答案 2 :(得分:-2)

$(function() {
  $( "#to").datepicker();
  $( "#from").datepicker({
        maxDate: 0,
        dateFormat : 'dd-mm-yy',
        onSelect: function( selectedDate ) {
           $( "#to").datepicker("setDate", selectedDate);
           $( "#to").datepicker( "option", "minDate", selectedDate );
           var date = $(this).datepicker('getDate');
           var maxDate = date.setMonth(date.getMonth() + 3);
           $( "#to" ).datepicker( "option", "maxDate", maxDate );
  }
});