Bootstrap datepicker从另一个datepicker更改minDate/startDate

vik*_*gid 15 javascript jquery twitter-bootstrap bootstrap-datepicker

我的页面中有两个日期选择器,两者都是bootstrap.条件仅是结束日期的开始日期从不高.意味着结束日期属性(minDate)必须在开始日期由datepicker更改时更改,并且在结束日期更改时更改,开始日期datepicker的日历的最小范围应根据结束日期值.

我希望你理解我的问题

$(document).ready(function(){
  
      $("#startdate").datepicker({
       
        todayBtn:  1,
        autoclose: true,
       
       
      }).on('changeDate', function (selected) {
        var minDate = new Date(selected.date.valueOf());
        $('#enddate').datetimepicker('setStartDate', minDate);
    });
    
        $("#enddate").datepicker();
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.0/js/bootstrap-datepicker.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet">



<input type="text" placehoder="Start Date" id="startdate"/>
<input type="text" placehoder="End Date" id="enddate"/>
Run Code Online (Sandbox Code Playgroud)

Raz*_*nho 72

我做了一个jsfiddle做你想要的.正如pqdong所说,你在设置结束日期时调用datetimepicker而不是datepicker.

这是工作的JavaScript:

$(document).ready(function(){

    $("#startdate").datepicker({
        todayBtn:  1,
        autoclose: true,
    }).on('changeDate', function (selected) {
        var minDate = new Date(selected.date.valueOf());
        $('#enddate').datepicker('setStartDate', minDate);
    });

    $("#enddate").datepicker()
        .on('changeDate', function (selected) {
            var maxDate = new Date(selected.date.valueOf());
            $('#startdate').datepicker('setEndDate', maxDate);
        });

});
Run Code Online (Sandbox Code Playgroud)

  • @sidpat您可以通过几种方法为该值添加5天。以下可能是最简单的:var minDate = new Date(selected.date.valueOf()+(1000 * 60 * 60 * 24 * 5));` (2认同)

小智 8

我没有足够的声誉来评论 Razzildinho 的出色答案,但确实想提供一个有助于用户的小补充,即在第二个日期选择器上突出显示所选日期。您可以通过添加以下行来执行此操作:

$('#enddate').datepicker('setDate', minDate);
Run Code Online (Sandbox Code Playgroud)

所以在上下文中它看起来像这样:

$(document).ready(function(){

$("#startdate").datepicker({
    todayBtn:  1,
    autoclose: true,
}).on('changeDate', function (selected) {
    var minDate = new Date(selected.date.valueOf());
    $('#enddate').datepicker('setStartDate', minDate);
    $('#enddate').datepicker('setDate', minDate); // <--THIS IS THE LINE ADDED
});

$("#enddate").datepicker()
    .on('changeDate', function (selected) {
        var maxDate = new Date(selected.date.valueOf());
        $('#startdate').datepicker('setEndDate', maxDate);
    });

});
Run Code Online (Sandbox Code Playgroud)