javascript - 如何从选择框中选择最大日期在Js中显示警报消息

标签 javascript jquery

在下面的代码片段中,最大日期是 2017 年 7 月 29 日。如果我选择最大日期,我们应该显示一个警报框。是否可以使用 Javascript 或 jQuery?

注意:选项按随机顺序显示。

HTML:

<select id="period" name="PeriodCollection" style="border-radius: 4px; ">
    <option value="3">10-July-2017</option>
    <option value="12">15-July-2017</option>
    <option value="9">29-July-2017</option>
    <option value="5">23-July-2017</option>
</select>

最佳答案

你可以尝试这样的事情:

逻辑:

  • 创建一个变量,用于保存最大日期的值或文本(在下面的示例中)。
  • 然后添加一个事件监听器来检查更改时所需的属性。
  • 如果此属性与步骤 1 中计算出的 Max 相同,则提醒用户。

注意:这两种方法都假设不存在动态元素,因此最大日期的计算是预先在 document.ready 上完成的。另外,我将 valuetext 保留在变量中。这将使我们能够绕过为每次更改创建日期的步骤。

使用文本方法

$(function(){
  var maxValue = null;
  function computeMaxValue(arr){
    arr.reduce(function(_max, cur){
      var t = new Date(cur).getTime();
      if(t > _max) {
        _max = t;
        maxValue = cur;
      }
      return _max;
    }, 0)
  }
  
  var dates = $('#period option').map(function(){ return $(this).text() }).get();
  computeMaxValue(dates);

  $('#period').on('change', function(){
    var text = $('option:selected', this).text();
    if(text === maxValue){
      console.log('You have selected Max value');
    }
  })
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<select id="period" name="PeriodCollection" style="border-radius: 4px; ">
    <option value="3">10-July-2017</option>
    <option value="12">15-July-2017</option>
    <option value="9">29-July-2017</option>
    <option value="5">23-July-2017</option>
</select>

有值(value)的方法

$(function(){
  var maxValue = null;
  function computeMaxValue(selector){
    var temp = 0;
    $(selector).each(function (index, el){
      var time = new Date(el.textContent).getTime();
      if(time >= temp) {
        temp = time;
        maxValue = el.value;
      }
    })
  }
  
  computeMaxValue('#period option');

  $('#period').on('change', function(){
    if(this.value === maxValue){
      console.log('You have selected Max value');
    }
  })
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<select id="period" name="PeriodCollection" style="border-radius: 4px; ">
    <option value="3">10-July-2017</option>
    <option value="12">15-July-2017</option>
    <option value="9">29-July-2017</option>
    <option value="5">23-July-2017</option>
</select>

包含 1 个选项的示例

$(function(){
  var maxValue = null;
  function computeMaxValue(selector){
    var temp = 0;
    $(selector).each(function (index, el){
      var time = new Date(el.textContent).getTime();
      if(time >= temp) {
        temp = time;
        maxValue = el.value;
      }
    })
  }
  
  computeMaxValue('#period option');

  $('#period').on('change', function(){
    if(this.value === maxValue){
      console.log('You have selected Max value');
    }
  })
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<select id="period" name="PeriodCollection" style="border-radius: 4px; ">
    <option>--Select Period--</option>
    <option value="5">23-July-2017</option>
</select>

关于javascript - 如何从选择框中选择最大日期在Js中显示警报消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46681521/

相关文章:

jquery - pjax成功后绑定(bind)日期选择器会导致无限循环

Jquery 使用 json 数组类名更新 css 文件属性

javascript - 如何计算孙子div的宽度?

javascript - 有没有办法检测javascript中字母的最低点?

javascript - 固定 div 在向左滚动的 Css 上消失

javascript - 索引 ASYNC JavaScript 内容

jquery - 编写一个函数 onchange 某些属性

javascript - Nodejs - 一次登录的 Passport-saml 实现

javascript - unicode字符串中每个字符的二进制数据如何与下一个字符的二进制数据分开?

javascript - HTML5 FormData 通过 JQuery 发送空对象