【问题标题】:how to validate only one years of dates in jQuery datepicker如何在 jQuery datepicker 中仅验证一年的日期
【发布时间】:2019-11-07 05:58:56
【问题描述】:

我想在一年内验证月份和日期,并且我创建了仅允许一年的日期但未验证。

例如

我在一年内创建,当前日期是 2019 年 7 月 11 日,我可以允许选择 2020 年 7 月 11 日之前的日期,这就是我创建的工作正常.. 但如果我手动输入某个日期,则允许。示例:如果我输入(手动输入)2022 年 1 月 1 日,它是允许的。我不想允许超过 1 年的日期。如何验证这一点??

希望我的问题能被理解..

这里是小提琴的例子..

FIDDLE HERE..

示例代码在这里..

$(document).ready(function() {
  $('#vochDate, #refdate').datepicker({
    dateFormat: "dd/mm/yy",
    maxDate: '1y',
    minDate: "-10m"
  });
});
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.css" />
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js" integrity="sha256-T0Vest3yCU7pafRw9r+settMBX6JkKN06dqBnpQ8d30=" crossorigin=" anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>

<div class="form-group col-4 rfdate">
  <label class="col-sm-5 control-label p-sm-0" for="vouchdt">Voucher Date :</label>
  <div class="input-group vcdate datepic" id="vocdate">
    <input type="text" class="form-control" id="vochDate" name="vouchdt" th:field="*{strvouchdt}" />
    <span class="input-group-addon">
       <i class="glyphicon glyphicon-calendar"></i>
     </span>
  </div>
</div>

【问题讨论】:

标签: javascript jquery


【解决方案1】:

我的代码有变化,请看下面的答案。

$(document).ready(function() {
  $('#vochDate, #refdate').datepicker({
    dateFormat: "dd/mm/yy",
    maxDate: '1y',
    minDate: "-10m"
  });
    
  $(document).on( ' input change', '#vochDate', function(){
      $('.err').remove();
     	const nr_years = 1;
     	var maxDate = new Date(new Date().setFullYear(new Date().getFullYear() + nr_years));
        var curDate = $(this).datepicker("getDate");
        if (curDate > maxDate) {
            //alert("invalid date");
            $('#vochDate').after('<span class="err"> Invalid Date </span>');
            $(this).datepicker("setDate",  new Date());
            
        }
         
   })
});
.err {
color : red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.css" />
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js" integrity="sha256-T0Vest3yCU7pafRw9r+settMBX6JkKN06dqBnpQ8d30=" crossorigin=" anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>


<div class="form-group col-4 rfdate">
  <label class="col-sm-5 control-label p-sm-0" for="vouchdt">Voucher Date :</label>
  <div class="input-group vcdate datepic" id="vocdate">
    <input type="text" class="form-control" id="vochDate" name="vouchdt" th:field="*{strvouchdt}" />
    <span class="input-group-addon">
      <i class="glyphicon glyphicon-calendar"></i>
    </span>
  </div>
</div>

【讨论】:

  • 太棒了!我如何在 html 中显示错误消息,如无效日期,请选择有效日期,如..
  • 如果我选择了错误的数据,错误会出现的。但是为什么 maxDate 显示在字段中?
  • 如果没有最大日期,那么当有人输入错误日期时,您想输入哪个日期?如果它有帮助,请接受,以便有需要的人参考。
  • 如果有人输入错误的日期,显示错误并返回当前日期
  • 好的,显示错误并将日期字段设为空白或任何要填写的日期?
【解决方案2】:

使用更改事件来验证更改。这里可以看看

$(document).ready(function() {
  $('#vochDate, #refdate').datepicker({
    dateFormat: "mm/dd/yy",
    maxDate: '1y',
    minDate: "-10m"
  });
  $("#vochDate").change(function(){
    if((new Date($("#vochDate").val()).getTime()-new Date().getTime())/(1000*3600*24)>365){
    alert("invalid")
    //
    }
  })
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多