【问题标题】:Compare dates - End date should be greater than start date比较日期 - 结束日期应大于开始日期
【发布时间】:2017-02-08 21:54:48
【问题描述】:

我想不出一个逻辑来实现结束日期总是大于开始日期。这是我的视图代码,有两个字段事件结束和事件开始。尝试像Validate that end date is greater than start date with jQuery 中所示的那样实施,但失败了。如何实现?

<div class="clearfix"></div>
<div class="control-group form-group">

  <label class="control-label col-md-4" style="text-align:left">Event Start</label>
  <div class="controls" style="margin-left:0px">

    <div class="col-md-3 date" data-date="12-02-2012" data-date-format="dd-mm-yyyy" data-date-viewmode="years">
      <input class="m-wrap col-md-11 m-ctrl-medium datepicker form-control" required="required" name="starttimedate" id="ed_starttimedate" type="text" value="<?php echo $_POST['starttime']?date('d-m-Y',$_POST['starttime']):date('d-m-Y'); ?> " />
      <!-- <span class="add-on"><i class="fa fa-calendar" style="margin-top:5px"></i></span> -->
    </div>
    <div class="col-md-1">&nbsp;</div>
    <div class="col-md-3  bootstrap-timepicker-component">
      <input class="m-wrap col-md-11 m-ctrl-medium timepicker-default form-control" required="required" value="<?php echo date('h:i A',$_POST['starttime']);?>" name="starttimetime" id="ed_starttimetime" type="text" />
      <!-- <span class="add-on"><i class="fa fa-clock-o" style="margin-top:5px"></i></span>-->
    </div>

    <div class="clearfix"></div>

  </div>

</div>
<div class="clearfix"></div>
<div class="control-group form-group">
  <label class="control-label col-md-4" style="text-align:left">Event End</label>
  <div class="controls ">
    <div class="col-md-3 date" data-date="12-02-2012" data-date-format="dd-mm-yyyy" data-date-viewmode="years">
      <input class="m-wrap col-md-11 m-ctrl-medium datepicker form-control" required="required" name="endtimedate" id="ed_endtimedate" type="text" value="<?php echo $_POST['endtime']?date('d-m-Y',$_POST['endtime']):date('d-m-Y'); ?> " />
      <!--<span class="add-on"><i class="fa fa-calendar" style="margin-top:5px"></i></span>-->
    </div>
    <div class="col-md-1">&nbsp;</div>
    <div class="col-md-3 bootstrap-timepicker-component">
      <input class="m-wrap col-md-11 m-ctrl-medium timepicker-default form-control" required="required" value="<?php echo date('h:i A',$_POST['endtime']);?>" name="endtimedatetime" id="ed_endtimedatetime" type="text" />
      <!-- <span class="add-on"><i class="fa fa-clock-o" style="margin-top:5px"></i></span>-->
    </div>
  </div>

脚本是:

<script>
  $("#ed_endtimedate").change(function() {
    var startDate = document.getElementById("ed_starttimedate").value;
    var endDate = document.getElementById("ed_endtimedate").value;

    if ((Date.parse(ed_endtimedate) <= Date.parse(ed_starttimedate))) {
      alert("End date should be greater than Start date");
      document.getElementById("ed_endtimedate").value = "";
    }
  });
</script>

【问题讨论】:

  • 请不要把你所有的代码。创建一个最小且可验证的样本
  • Codeigniter-2 & Codeigniter-3 以防万一我假设
  • 大概有 10 行代码与这个问题相关。请去掉噪音,给我们看相关代码
  • 试试这个链接我希望它被完整使用codeproject.com/Questions/716819/…

标签: javascript php codeigniter codeigniter-2 codeigniter-3


【解决方案1】:

<script>
  $("#ed_endtimedate").change(function() {
    var startDate = document.getElementById("ed_starttimedate").value;
    var endDate = document.getElementById("ed_endtimedate").value;

    if ((Date.parse(ed_endtimedate) <= Date.parse(ed_starttimedate))) {
      alert("End date should be greater than Start date");
      document.getElementById("ed_endtimedate").value = "";
    }
  });
</script>

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
【解决方案2】:

在您的 if-case 中,您实际上是在尝试引用输入字段的 id,而不是您定义的两个变量。将发生错误,因为脚本将尝试读取两个未定义的变量。请参阅下面的修复程序

<script>
  $("#ed_endtimedate").change(function() {
    var startDate = document.getElementById("ed_starttimedate").value;
    var endDate = document.getElementById("ed_endtimedate").value;

    if ((Date.parse(endDate) <= Date.parse(startDate))) {
      alert("End date should be greater than Start date");
      document.getElementById("ed_endtimedate").value = "";
    }
  });
</script>

重新阅读您的代码后,我发现您使用了无效的日期格式。日期格式的 ISO 标准是 yyyy-mm-dd,但您使用的是 dd-mm-yyyy。

【讨论】:

  • 表单总是会被提交......这段代码中没有任何内容会拒绝提交表单。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-08
  • 1970-01-01
相关资源
最近更新 更多