Jquery datepicker根据第一个日期字段中的选定日期限制第二个日期字段中的日期

时间:2013-05-04 11:25:16

标签: jquery html datepicker jquery-ui-datepicker

我正在使用Jquery日期选择器,我有以下代码,当用户选择日期时,下面的字段填充日期+1

$('#dt2').datepicker({
        dateFormat: "dd-M-yy" 
    });

$("#dt1").datepicker(
    {dateFormat: "dd-M-yy", 
    minDate:  0,
onSelect: function(date){
var date2 = $('#dt1').datepicker('getDate');
            date2.setDate(date2.getDate()+1);
            $('#dt2').datepicker('setDate', date2);

我想限制dt2字段中的日期,该字段不应低于dt1字段中的日期。例如。如果dt1中选择的日期为01-May-2013,则允许用户在01-May-2013后选择日期,且不得少于02-May-2013

如何限制日期字段2中的日期选择?

3 个答案:

答案 0 :(得分:39)

我为你创造了一个jsfiddle。 我不是百分之百确定它是否“万无一失”但是为了防止用户手动输入日期,你可以将输入设置为readonly,例如。

<input type="text" id="dt1" readonly="readonly">

目前我检查了dt2 onClose,如果它的日期低于dt1s date,我会更正它。 此外,如果在dt1中选择了日期,则dt2的minDate设置为dt1 date +1。

$(document).ready(function () {

    $("#dt1").datepicker({
        dateFormat: "dd-M-yy",
        minDate: 0,
        onSelect: function (date) {
            var date2 = $('#dt1').datepicker('getDate');
            date2.setDate(date2.getDate() + 1);
            $('#dt2').datepicker('setDate', date2);
            //sets minDate to dt1 date + 1
            $('#dt2').datepicker('option', 'minDate', date2);
        }
    });
    $('#dt2').datepicker({
        dateFormat: "dd-M-yy",
        onClose: function () {
            var dt1 = $('#dt1').datepicker('getDate');
            var dt2 = $('#dt2').datepicker('getDate');
            //check to prevent a user from entering a date below date of dt1
            if (dt2 <= dt1) {
                var minDate = $('#dt2').datepicker('option', 'minDate');
                $('#dt2').datepicker('setDate', minDate);
            }
        }
    });
});

请参阅jsfiddle

答案 1 :(得分:17)

我是这样做的 -

DEMO

代码如下

$('#dt2').datepicker({
    dateFormat: "dd-M-yy" 
});

$("#dt1").datepicker({
    dateFormat: "dd-M-yy", 
    minDate:  0,
    onSelect: function(date){            
        var date1 = $('#dt1').datepicker('getDate');           
        var date = new Date( Date.parse( date1 ) ); 
        date.setDate( date.getDate() + 1 );        
        var newDate = date.toDateString(); 
        newDate = new Date( Date.parse( newDate ) );                      
        $('#dt2').datepicker("option","minDate",newDate);            
    }
});

答案 2 :(得分:3)

我刚刚更改了您的代码,因此date2的最小日期自动设置&amp;如果date1大于date2,则设置date2 = date1

  $("#dt1").datepicker({
            dateFormat: "dd/mm/yy",
            onSelect: function (date) {
                var dt1 = $('#dt1').datepicker('getDate');
                var dt2 = $('#dt2').datepicker('getDate');
                if (dt1 > dt2) {
                    $('#dt2').datepicker('setDate', dt1);
                }
                $('#dt2').datepicker('option', 'minDate', dt1);
            }
        });
        $('#dt2').datepicker({
            dateFormat: "dd/mm/yy",
            minDate: $('#dt1').datepicker('getDate'),
            onClose: function () {
                var dt1 = $('#dt1').datepicker('getDate');
                var dt2 = $('#dt2').datepicker('getDate');
                //check to prevent a user from entering a date below date of dt1
                if (dt2 <= dt1) {
                    var minDate = $('#dt2').datepicker('option', 'minDate');
                    $('#dt2').datepicker('setDate', minDate);
                }
            }
        });