具有不同规则的Datepicker

时间:2017-06-13 20:17:10

标签: jquery html datepicker materialize

我正在使用materialize.min.js,然后在表单中为每个日期选择器使用不同的min和max规则时会出现问题。

以下代码无效。有什么想法吗?

<script>    
    $(document).ready(function() {
        $('select').material_select();
        $('.datepicker').pickadate({
          firstDay: 1,
          selectYears: true,
          selectMonths: true,
          onSet: function(object) {
            if (object.select) {
              this.close();
            }
          }
        });
        $('#dt1').pickadate({
          min: new Date(new Date().getFullYear()-75,1,1),
          max: new Date(new Date().getFullYear()-18,12,31)
        });
        $('#dt2').pickadate({
          min: new Date(new Date().getFullYear()-14,new Date().getMonth(), new Date().getDate()),
          max: new Date(new Date().getFullYear(),new Date().getMonth(), new Date().getDate())
        });
    });
</script>

1 个答案:

答案 0 :(得分:2)

你尝试过这样的事吗?

$(document).ready(function() {
    $('select').material_select();
    $('#dt1').pickadate({
      min: new Date(new Date().getFullYear()-75,1,1),
      max: new Date(new Date().getFullYear()-18,12,31),
      firstDay: 1,
      selectYears: true,
      selectMonths: true,
      onSet: function(object) {
        if (object.select) {
          this.close();
        }
      }
    });
    $('#dt2').pickadate({
      min: new Date(new Date().getFullYear()-14,new Date().getMonth(), new Date().getDate()),
      max: new Date(new Date().getFullYear(),new Date().getMonth(), new Date().getDate()),
      firstDay: 1,
      selectYears: true,
      selectMonths: true,
      onSet: function(object) {
        if (object.select) {
          this.close();
        }
      }
    });
});

我认为,pickadate的第二次调用可能无法在第一次初始化后正确更新范围。

编辑:

要减少loc,您可以将一组基本选项扩展为两个对象,稍后再分配

var baseOptions = {
  firstDay: 1,
  selectYears: true,
  selectMonths: true,
  onSet: function(object) {
    if (object.select) {
      this.close();
    }
  }
}
$('#dt1').pickadate(Object.assign(baseOptions, {
  min: new Date(new Date().getFullYear()-75,1,1),
  max: new Date(new Date().getFullYear()-18,12,31)
})