在 daterangepicker 中点击 "selected date" 时的回调函数
Callback function when clicked on "selected date" in daterangepicker
使用最新版本 Daterangepicker for bootstrap
对于以下日历(其网站中使用的标准示例):
$('#demo').daterangepicker({
"singleDatePicker": true,
"autoApply": true,
"startDate": "05/31/2017",
"endDate": "06/06/2017"
}, function(start, end, label) {
console.log("a date is selected")
});
当我 select 日历中的日期时,给定的回调函数被正确调用。但是,如果我 select 已经 selected 的活动日期,弹出窗口将关闭但不会调用回调函数。据我所知,当同一日期 selected.
时,没有提供任何触发功能的机会
所以,我的问题是:是否有一种黑客方法可以在 selected 相同日期时调用回调函数?
例如,我尝试了以下代码来向活动单元格添加侦听器,但它也没有被触发:
$('td.active.start-date.active.end-date.available').on('click', function () {
console.log('the same date is selected')
})
您可以做的是将一个额外的事件绑定到您的输入,当您 select 一个选项时将调用该事件。请参阅以下代码(假设您输入的是带有 id demo 的元素)因为您已经使用了 jQuery 我的示例也使用了它:
$('#demo').on('change.datepicker', function(ev){
var picker = $(ev.target).data('daterangepicker');
console.log(picker.startDate); // contains the selected start date
console.log(picker.endDate); // contains the selected end date
// ... here you can compare the dates and call your callback.
});
希望对您有所帮助!
'click' 事件不起作用,但 'mousedown' 事件起作用。
下面是一个示例,它标识了被点击的元素 ('td.available') 并以编程方式再次点击相同的日期。
$('#demo').on('showCalendar.daterangepicker', function(ev, picker) {
function triggerMouseEvent (node, eventType) {
var clickEvent = document.createEvent ('MouseEvents');
clickEvent.initEvent (eventType, true, true);
node.dispatchEvent (clickEvent);
}
// when user selects ("mousedown") any date in the calendar:
$('td.available').on("mousedown", function() {
clickedElement = $('td.in-range')[0]; // this is the clicked element
// example: programatically click again.
triggerMouseEvent (clickedElement, "mouseover");
triggerMouseEvent (clickedElement, "mousedown");
triggerMouseEvent (clickedElement, "mouseup");
triggerMouseEvent (clickedElement, "click");
);
});
});
使用最新版本 Daterangepicker for bootstrap
对于以下日历(其网站中使用的标准示例):
$('#demo').daterangepicker({
"singleDatePicker": true,
"autoApply": true,
"startDate": "05/31/2017",
"endDate": "06/06/2017"
}, function(start, end, label) {
console.log("a date is selected")
});
当我 select 日历中的日期时,给定的回调函数被正确调用。但是,如果我 select 已经 selected 的活动日期,弹出窗口将关闭但不会调用回调函数。据我所知,当同一日期 selected.
时,没有提供任何触发功能的机会所以,我的问题是:是否有一种黑客方法可以在 selected 相同日期时调用回调函数?
例如,我尝试了以下代码来向活动单元格添加侦听器,但它也没有被触发:
$('td.active.start-date.active.end-date.available').on('click', function () {
console.log('the same date is selected')
})
您可以做的是将一个额外的事件绑定到您的输入,当您 select 一个选项时将调用该事件。请参阅以下代码(假设您输入的是带有 id demo 的元素)因为您已经使用了 jQuery 我的示例也使用了它:
$('#demo').on('change.datepicker', function(ev){
var picker = $(ev.target).data('daterangepicker');
console.log(picker.startDate); // contains the selected start date
console.log(picker.endDate); // contains the selected end date
// ... here you can compare the dates and call your callback.
});
希望对您有所帮助!
'click' 事件不起作用,但 'mousedown' 事件起作用。
下面是一个示例,它标识了被点击的元素 ('td.available') 并以编程方式再次点击相同的日期。
$('#demo').on('showCalendar.daterangepicker', function(ev, picker) {
function triggerMouseEvent (node, eventType) {
var clickEvent = document.createEvent ('MouseEvents');
clickEvent.initEvent (eventType, true, true);
node.dispatchEvent (clickEvent);
}
// when user selects ("mousedown") any date in the calendar:
$('td.available').on("mousedown", function() {
clickedElement = $('td.in-range')[0]; // this is the clicked element
// example: programatically click again.
triggerMouseEvent (clickedElement, "mouseover");
triggerMouseEvent (clickedElement, "mousedown");
triggerMouseEvent (clickedElement, "mouseup");
triggerMouseEvent (clickedElement, "click");
);
});
});