javascript - 比较最多三个日期选择器字段中的日期,然后用最早的字段填充另一个字段

标签 javascript jquery html

我有一个用 Perl、HTML、CSS 和少量 Javascript 编写的 Web 表单。我有一些基于 jquery 的 Javascript,但总的来说,我对 Javascript 和 jquery 还很陌生。

该表单具有三个日期字段,这些字段由 jquery 的“datepicker”脚本填充。有时仅输入三个日期之一,有时输入两个,有时输入全部三个。

如何比较所选日期(无论是一个、两个还是三个)来确定最早的日期,然后采用该日期并填充表单上的另一个字段?

该表格是公寓楼住房申请表,每间公寓可容纳 1 至 3 名居民。每个居民都必须指明他们打算搬入的日期。然后我的程序需要确定哪个日期是最早的,并用该值填充另一个字段(总体“最早入住日期”)。

我希望能够在输入日期时立即填写“最早入住日期”(而不是必须提交表格,然后重新加载表格才能看到日期被填写)。

最佳答案

这是一个最小的示例 - 没有验证日期选择器字段中的日期等。

https://jsfiddle.net/sdjwoo0a/

HTML

<input name='date1' type='text' class='picky' placeholder='Date 1' />
<input name='date2' type='text' class='picky' placeholder='Date 2' />
<input name='date3' type='text' class='picky' placeholder='Date 3' />
<input id='earliest_date' name='earliest' type='text' readonly placeholder='Earliest' />

JS

jQuery(document).ready(function() {

  $('input.picky').each(function() {
    $(this).datepicker();
    $(this).change(updateEarliest);
  });

  function updateEarliest() {
    var dates = [];
    $('input.picky').each(function() {
      var val = $(this).val();
      if (val != '') {
        dates.push({
          val: val,
          date: new Date(val)
        });
      }
    });
    dates.sort(function(a, b) {
      return a.date > b.date ? 1 : a.date < b.date ? -1 : 0;
    });
    var earliest = dates.length ? dates.shift().val : '';
    $('#earliest_date').val(earliest);
  }
});

关于javascript - 比较最多三个日期选择器字段中的日期,然后用最早的字段填充另一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34932761/

相关文章:

javascript - 在 JS 中更改类属性 - 更好的性能

javascript - 如何删除除以某个单词开头的文本之外的所有文本?

jquery - 使用 jquery 从 html 页面中删除样式标签

javascript - 如何使用ajax交换两个表格单元格值并更新到数据库中

html - 在 response.sendRedirect() 中传递参数 - JSP

javascript - 表单 POST 未显示在 Controller 中

javascript - 使用 javascript 在 mySQL 查询后填充表单

javascript - 如何确定 sap.m.Select 中项目的绑定(bind)类型?

javascript - DataTables jquery 识别行 ID

javascript - 使用两个 jQuery 函数,在第二个函数上获取 "ReferenceError: document is not defined"