【问题标题】:Javascript/Jquery-UI make reusable function that checks if dateTo is after dateFromJavascript/Jquery-UI 制作可重用函数,检查 dateTo 是否在 dateFrom 之后
【发布时间】:2019-08-07 10:13:13
【问题描述】:

我有 2 个日期选择器。 #datepicker0#datepicker1 以及以下代码来检查 date_from 是否在 date_to 之后:

$('#datepicker0').datepicker({
  dateFormat: 'yy-mm-dd'
});

var valeDate = {
  dateFormat: 'yy-mm-dd',
  onSelect: function() {
    if ($('#datepicker0').val() > $(this).val()) {
      alert("Date problem");
      $(this).val(null)

    }

    $(this).change();
  }
}

$("#datepicker1").datepicker(valeDate).on("change", function() {
  display("Change event");

我想从 onSelect 函数中删除参数#datepicker0 以使函数可重用。

谁能教我怎么做?

【问题讨论】:

  • 将日期转换为时间戳并检查数字是否大于另一个。
  • 如果 date2 的值不能早于 date1,则在 date1 已设置值时更新 date2minDate。然后你不需要验证任何客户端。请参阅this question 了解更多信息
  • 不抱歉......发布的功能工作正常......我会从中删除元素“datepicker0”的依赖关系。
  • 更具体地说,我想将我的代码从“if ($('#datepicker0').val() > $(this).val())”改进为“if ($(generic_value ).val() > $(this).val()) "

标签: javascript jquery html


【解决方案1】:
function validateDate(datepicker, value) {
   if (value > datepicker.val()) {
       alert("Date problem")
       datepicker.val(null)
   }
   datepicker.change()
}

var valeDate = {
  dateFormat: 'yy-mm-dd',
  onSelect: function() {
      validateDate($(this), $('#datepicker0').val())
  }
}

下次,请向代码审查 (https://codereview.stackexchange.com/) 提出此类问题(一切正常,但代码需要修改)

【讨论】:

    【解决方案2】:

    最后我使用了这个代码:

    function datepickerValidator(startDate,endDate) {
       var datepickerFrom = startDate;
       var datepickerTo   = endDate;
    
    // returns the millisecond obtained from the string 'dd-mm-yy'
       function getTimeMillis(dateString) {
          var splittedFrom = dateString.split("-");
          var day = splittedFrom[0];
          var month = splittedFrom[1];
          var year = splittedFrom[2];
          var dateTmp = new Date(year + "-" + month + "-" + day);
          var timeMillis = dateTmp.getTime();
        return timeMillis;
    }
    
    var validateDatePickerOption = {dateFormat: 'dd-mm-yy',
            onSelect: function() {
                from = getTimeMillis(datepickerFrom.val());
                to = getTimeMillis($(datepickerTo).val());
                if ( from > to )  {
                    alert("Date problem: value 'To' must be after 'From'");
                    $(this).val(null)
                    }
                }
            }
     return validateDatePickerOption;
    }
    

    对于每个日期选择器:

    var from = $("#From");
    var to = $("#To");
    var datepickerOption = datepickerValidator(from,to);
    from.datepicker(datepickerOption);
    to.datepicker(datepickerOption);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-02
      • 1970-01-01
      • 2012-12-06
      • 1970-01-01
      • 1970-01-01
      • 2014-10-20
      相关资源
      最近更新 更多