为什么在选择除今天之外的日期时,时间戳不能降级?

时间:2017-08-01 03:13:39

标签: javascript jquery twitter-bootstrap datetimepicker eonasdan-datetimepicker

我的HTML代码如下:

<div class="container">
    <div class="row">
        <div class='col-sm-6'>
            <div class="form-group">
                <input type='text' class="form-control" id='datepicker' data-date-format="DD-MM-YYYY" />
            </div>
        </div>

        <div class='col-sm-6'>
            <div class="form-group">
                <input type='text' class="form-control" id='timepicker' data-date-format="HH:mm" />
            </div>
        </div>
    </div>
</div>
<button id="btnSubmit">
    Submit
</button>

我的JavaScript代码如下:

$(function () {    
    $('#datepicker').datetimepicker();

    $('#timepicker').datetimepicker({
        minDate: moment().startOf('minute').add(300, 'm'),
    });
});
$("#btnSubmit").click(function() {
    value = document.getElementById('datetimepicker').value;
    console.log(value)
});

这样的演示:https://jsfiddle.net/8jpmkcr5/89/

如果我单击时间戳并单击减量小时图标,则它不起作用。我知道这是因为这段代码:minDate: moment().startOf('minute').add(300, 'm')。我希望代码只在这一天工作。除了今天,代码不起作用

我该怎么做?

2 个答案:

答案 0 :(得分:1)

您的#datepicker#timepicker 无关完全独立, 是由你来 关联 他们。您可以使用minDate函数动态设置minDate #timepicker

如果所选日期是当天(使用momentjs dp.change),您可以为isSame事件添加列表器,并为minDate chceking启用或禁用#timepicker

如果您要禁用过去日期,则必须向#datepicker添加minDate选项,如评论中所述。

这是一份工作样本:

$(function () {    
  $('#datepicker').datetimepicker({
    minDate: moment().startOf('day')
  }).on('dp.change', function(e){
    if( e.date && e.date.isSame(moment(), 'd') ){
      var min = moment().startOf('minute').add(300, 'm');
      $('#timepicker').data("DateTimePicker").minDate(min);
    } else {
      $('#timepicker').data("DateTimePicker").minDate(false);
    }
  });
  
  $('#timepicker').datetimepicker({
    minDate: moment().startOf('minute').add(300, 'm'),
  });
});


$("#btnSubmit").click(function() {
   value = document.getElementById('datepicker').value;
   console.log(value)
   valueTime = document.getElementById('timepicker').value;
   console.log(valueTime)
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.js"></script>
<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.6/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.37/js/bootstrap-datetimepicker.min.js"></script>

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.37/css/bootstrap-datetimepicker.min.css" rel="stylesheet"/>

<div class="container">
    <div class="row">
        <div class='col-sm-6'>
            <div class="form-group">
                    <input type='text' class="form-control" id='datepicker' data-date-format="DD-MM-YYYY" />
            </div>
        </div>
        
        <div class='col-sm-6'>
            <div class="form-group">
                <input type='text' class="form-control" id='timepicker' data-date-format="HH:mm" />
            </div>
        </div>
    </div>
</div>

<button id="btnSubmit">
    Submit
</button>

请注意,如前所述,#datepicker#timepicker无关,因此#timepicker您只需选择一个时间,默认为当天(与...无关)使用#datepicker)选定的一天。

答案 1 :(得分:0)

如果您只想将输入限制为今天,为什么要设置时间选择器的限制?您应该在日期选择器

上设置限制