事件 & Hooks
事件
flatpickr具有用于最常见和有用操作的事件Hook。对于每个Hook,您可以指定一个函数或一个函数数组。
实例化之后,可以通过实例的config对象访问所有钩子。在对象内部,所有函数都存储在数组中,因此您需要操纵数组本身以添加或删除函数:
例子:
instance.config.onChange.push(function() { } );
调用时,添加到钩子的每个函数将接收3个参数。这些是:
selectedDates
- 用户选择的日期对象数组。如果没有选择日期,则该数组为空。dateStr
- 用户最新选择的Date对象的字符串表示形式。字符串按照dateFormat
选项格式设置。instance
- flatpickr对象,包含各种方法和属性。
Hooks(钩子)
onChange
当用户选择日期或更改选定日期的时间时,onChange会被触发。
onOpen
打开日历时会触发onOpen。
onClose
日历关闭时会触发onClose。
onMonthChange
当用户或以编程方式更改月份时,将触发onMonthChange。
onYearChange
当年份更改时(由用户或以编程方式)触发onYearChange。
{
onChange: function(selectedDates, dateStr, instance) {
//...
},
onOpen: [
function(selectedDates, dateStr, instance){
//...
},
function(selectedDates, dateStr, instance){
//...
}
],
onClose: function(selectedDates, dateStr, instance){
// ...
}
}
onReady
一旦日历处于就绪状态,就会触发onReady。
onValueUpdate
当使用新的日期字符串更新输入值时,将触发onValueUpdate。
onDayCreate
onDayCreate()
钩子完全控制每个日期单元。
{
onDayCreate: function(dObj, dStr, fp, dayElem){
// 使用dayElem.dateObj,这是对应的日期
// 虚拟逻辑
if (Math.random() < 0.15)
dayElem.innerHTML += "<span class='event'></span>";
else if (Math.random() > 0.85)
dayElem.innerHTML += "<span class='event busy'></span>";
}
}
每一天都有relative
定位,这使我们可以根据需要更轻松地定位指示器。
.event {
position: absolute;
width: 3px;
height: 3px;
border-radius: 150px;
bottom: 3px;
left: calc(50% - 1.5px);
content: " ";
display: block;
background: #3d8eb9;
}
.event.busy {
background: #f64747;
}