javascript - 如何在 flatpickr-day 元素上添加双击事件
问题描述
我有一些带有日期和时间的 flatpickr 日历,当我双击日历中的 flatpickr-day 元素时,我想关闭日历。
我试图在 flatpickr 选项的 onOpen 字段中添加一个双击监听器
var flatpckr_options = {
enableTime: true,
altInput: true,
altFormat: "d-m-Y H:i",
dateFormat: "Y-m-d H:i",
time_24hr: true,
allowInput: true,
onOpen: function(selectedDates, dateStr, instance) {
[...instance.calendarContainer.querySelectorAll(".flatpickr-day")].map(x => x.addEventListener('dblclick', function (e) {
calendars.map(x => x.close());
console.log("double click");
}));
}
};
const calendars = flatpickr(".calendar", flatpckr_options);
https://jsfiddle.net/p3e0da6r/2/
但是在 flatpickr-day 元素上没有触发双击事件,我怎样才能让它工作?
我认为这是因为一旦我点击一天,它就会将焦点更改为 flatpickr-time 元素,如果我没有 time 元素,日历将在默认情况下在 flatpickr-day 元素内单击时关闭,但我确实需要时间元素也是如此。
解决方案
您的代码有很多问题-
首先你input
是一个普通的输入,你需要添加属性data-input
以便你的 flatpickr 工作。
<input type='text' id='date' class='calendar' data-input/>
在onOpen
函数 -[...instance.calendarContainer.querySelectorAll("flatpickr-day")]
中,flatpickr-day
是一个类而不是独立元素。您可以通过 选择.flatpickr-day
。
[...instance.calendarContainer.querySelectorAll(".flatpickr-day")]
您需要使用https://flatpickr.js.org/events/的事件,而不是dblclick
use onChange
。
这是工作小提琴 - https://jsfiddle.net/mkwa9bhv/
注意 - 声明的变量const
不会被提升。在顶部声明const calendars = flatpickr(".calendar", flatpckr_options);
,以便在您的flatpckr_options
.
推荐阅读
- python - 如何仅提取文件名?
- java - Java Optional 接口:Optional 对象链上的嵌套条件
- c# - 在字符串中定义的我的类名的实例列表
- react-native - 在 webview react_native 中处理单击按钮或取消划线文本
- c++ - QML 参考错误 -
在 c++/QML 集成期间未定义 - reactjs - React 懒惰 vs Intersection 观察者 API
- azure - Azure AD:如何为应用设置自定义权限?
- react-native - 解析错误:意外的令牌,预期的,
- react-native - React-native-fetch-blob 创建 .apk 文件时出错
- android - 如何以编程方式“清除应用数据”然后“重新启动”Android 应用?