javascript - Flatpickr 更改事件中的清除日期

标签 javascript flatpickr

我在一个页面上有几个 flatpickr 输入,它们都有 class='flatpickr'。当用户手动删除输入中的日期时,我想调用clear方法。使用以下事件处理程序访问实际的 flatpickr 实例的语法是什么?

<input id="OpenDate" name="OpenDate" type="text" v-model="Item.OpenDate" class="form-control form-control-sm flatpickr"  />

$('.flatpickr').change(function () {
  console.log(this); // html input control
  console.log($(this)); // jquery object instance
  // flatpickr instance ???
  // if (value == '')
  //   ???.clear();
});

最佳答案

问题是,当您从 change 事件中调用 flatpickr.clear() 函数时,它会导致无限循环(因为 clear 函数也会调用 change 事件)。

我的解决方法是使用标志 shouldClear 并将其设置在需要清除的元素上:

flatpickr(".flatpickr",{dateFormat: "M d, Y", allowInput: true });

$(".flatpickr").on('input', function(e) {
    if(!this.shouldClear && !this.value.length && this._flatpickr.currentYear ) {
  	this.shouldClear = true;
  	this._flatpickr.clear();
  	this.shouldClear = false;
    }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css">
<script src="https://cdn.jsdelivr.net/npm/flatpickr"></script>

<input id="OpenDate1" name="OpenDate" type="text"  class="form-control form-control-sm flatpickr"  autocomplete="off" />
<input id="OpenDate2" name="OpenDate" type="text"  class="form-control form-control-sm flatpickr"  />
<input id="OpenDate3" name="OpenDate" type="text"  class="form-control form-control-sm flatpickr"  />

关于javascript - Flatpickr 更改事件中的清除日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58919269/

相关文章:

css - 在 Laravel 中使用 npm 安装时,如何加载 flatpickr 的 CSS?

javascript - 页面加载后替换 HTML 文档中的字符串

javascript - 在解析到下一个 then 之前减少所有 JS Promise

javascript - 无法在页面上显示 JSON

TypeScript 找不到模块 flatpickr,即使它包含 typescript 类型

css - Flatpickr 停止文本输入并删除 Iphone 默认日历

javascript - Flatpickr 清除按钮

javascript - 为什么这个 while 循环不停止?

javascript - 使用 Angular 表单取消提交

javascript - 自定义 Flatpickr Knockout 装订