禁用过去的日期在日期选择器中

3

我已经实现了代码,可以在“开始日期”datepicker中禁用当前日期之前的日期,并在“结束日期”datepicker中禁用所选“开始日期”之前的日期。它一直工作得很好,但突然间它不能禁用“开始日期”datepicker中当前日期之前的日期。

视图:

<div class="form-group col-md-4">
  <label for="pwd">Start Date</label>
  <input type="date" class="form-control" id='Sdate' name='Sdate' min="" value="">
  <div class="alert-danger"><?php echo form_error('Sdate'); ?></div>

</div>
<div class="form-group col-md-4">
  <label for="pwd">End Date</label>
  <input type="date" class="form-control" id='Edate' name='Edate' value="<?php echo set_value('Edate'); ?>">
  <div class="alert-danger"><?php echo form_error('Edate'); ?></div>
</div>

 

脚本:

$(document).ready(function(){


 var today = new Date();
 var sdate = today.getFullYear()+'-'+(today.getMonth()+1)+'-'+(today.getDate() < 10 ? '0'+today.getDate() : today.getDate());
 $('#Sdate').prop('min', sdate);

 $('#Sdate').on('change', function(){
    $('#Edate').prop('min', $(this).val() );
 });

});

这个很好用,一旦你修复了错别字:缺少 }) 以关闭 $(document).ready(function(){}。请参见 https://jsfiddle.net/b4dp0mnL/。 - Vickel
这不是我原始代码中缺失的,只是因为我不需要包含所有代码,所以在这里错过了:),即使在你分享的jsfiddle中也无法工作。@Vickel - Roxana Slj
1个回答

2

你的变量sdate返回'2021-1-11',但应该是'2021-01-11'

只需稍微修改您的代码,为所有月份<10添加前导0

$(document).ready(function() {

  const options1 = {
    year: 'numeric',
    month: 'numeric',
    day: 'numeric'
  };
  var today = new Date();
  y = today.getFullYear()
  m = today.getMonth() + 1
  m = m < 10 ? '0' + m : m;
  d = today.getDate()
  d = d < 10 ? '0' + d : d;
  sdate = y + '-' + m + '-' + d

  $('#Sdate').prop('min', sdate);

  $('#Sdate').on('change', function() {
    $('#Edate').prop('min', $(this).val());
  });
});

请点击此处查看一个可用的jsfiddle,过去的日期已被禁用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接