Flatpicker配置defaultHour和defaultMinute不生效,选日期无法默认当前时间
问题根因
你配置的defaultHour、defaultMinute仅在Flatpicker初始化时生效,后续手动选择新日期时不会动态重新获取当前时间,因此会默认回落到Flatpicker内置的12:00默认值。
修复方案
新增onChange回调处理选中日期的时间自动填充逻辑,同时不覆盖Django返回的已有时间值,修改后完整配置如下:
$('.datepicker').flatpickr({ dateFormat: "d-m-Y H:i:S", enableTime: true, // enableSeconds: true, allowInput: true, time_24hr: true, minuteIncrement: 1, // 保留初始化时的默认时间配置 defaultHour: new Date().getHours(), defaultMinute: new Date().getMinutes(), // 新增选中日期回调 onChange: function(selectedDates, dateStr, instance) { // 仅当存在选中日期、且无初始预设值(非Django加载的已有数据)时执行 if (selectedDates.length > 0 && !instance.config.defaultDate) { const now = new Date(); const targetDate = selectedDates[0]; // 替换选中日期的时分秒为当前时间 targetDate.setHours(now.getHours()); targetDate.setMinutes(now.getMinutes()); targetDate.setSeconds(now.getSeconds()); // 第二个参数设为false避免触发二次onChange导致循环 instance.setDate(targetDate, false); } } });
注意事项
- 若Django返回的数据已正确绑定到输入框的
value属性,Flatpicker初始化时会自动读取该值作为defaultDate,不会被上述逻辑覆盖,原有时间的展示逻辑不受影响。 - 若你需要实现「修改已有数据的日期时也自动更新为当前时间」的效果,删除判断条件里的
&& !instance.config.defaultDate即可。
内容的提问来源于stack exchange,提问作者user1463152
相关产品推荐
相关产品推荐

