javascript - 计算持续时间并在 daterangepicker 日历中显示
问题描述
我正在尝试计算日历上选定日期之间的持续时间,这计算得很好,但是当我单击应用按钮而不是选择结束日期时。
我使用的日历来自:http ://www.daterangepicker.com
$(function() {
$('input[name="daterange"]').daterangepicker({
opens: 'left',
}, function(start, end, label) {
document.getElementById('departure_date').value = start.format('YYYY-MM-DD');
document.getElementById('return_date').value = end.format('YYYY-MM-DD');
//Calculation of Duration:
var date1 = new Date(start.format('YYYY-MM-DD'));
var date2 = new Date(end.format('YYYY-MM-DD'));
var timeDiff = Math.abs(date2.getTime() - date1.getTime());
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24) + 1);
$('.duration_days').html(diffDays+' Days');
//console.log("A new date selection was made: " + start.format('YYYY-MM-DD') + ' to ' + end.format('YYYY-MM-DD'));
});
});
解决方案
正如 Shree Tiwari 在评论中解释的那样,您可以使用apply.daterangepicker事件。
apply.daterangepicker:当单击应用按钮或单击预定义范围时触发
所以你最终的js代码是这样的:
$(function() {
$('input[name="daterange"]').daterangepicker({
opens: 'left',
}, function(start, end, label) {
document.getElementById('departure_date').value = start.format('YYYY-MM-DD');
document.getElementById('return_date').value = end.format('YYYY-MM-DD');
});
$('input[name="daterange"]').on('apply.daterangepicker', function(ev, picker) {
var date1 = new Date(start.format('YYYY-MM-DD'));
var date2 = new Date(end.format('YYYY-MM-DD'));
var timeDiff = Math.abs(date2.getTime() - date1.getTime());
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24) + 1);
$('.duration_days').html(diffDays+' Days');
});
});
推荐阅读
- amazon-web-services - Openpose 在 AWS 深度学习实例上失败。那么哪个实例可以100%运行呢?
- java - 自定义 ListView 有一个按钮 - 如何检测按钮被按下的哪一行?
- mongodb - 使用时区减少地图
- c - PC-Lint 如何忽略表达式或宏
- python - 旋转 x-ticks matplotlib
- php - PHP Mailer [escapeshellcmd() 出于安全原因已被禁用]
- javascript - JS过滤功能问题
- node.js - nodejs 中的 post 请求不返回任何护照身份验证
- ios - Godot 导出到 IOS 失败
- java - 与 Postman 相比,CloseableHttpClient 的预期性能是多少