【发布时间】:2019-05-15 05:20:55
【问题描述】:
我在我的应用程序中使用 daterangepicker 库。一旦使用离开 daterangepicker 容器区域,我想触发 daterangepicker 的内部方法 .hide()。我的代码如下所示。
<body class="visual-sandbox">
<div class="visual-rangepicker">
<div id="reportrange" class="report-range">
<div class="calendar-icon">
<i class="glyphicon glyphicon-calendar fa fa-calendar"></i>
</div>
<span></span> <b class="caret caret-dropdown"></b>
</div>
</div>
</body>
$("#reportrange").daterangepicker(
{
startDate: start,
endDate: end,
opens: 'left',
ranges: {
// new Date(2017, 11, 1)
Today: [moment(new Date()), moment(new Date())],
Yesterday: [
moment(new Date()).subtract(1, "days"),
moment(new Date()).subtract(1, "days")
],
"Last 7 Days": [moment(new Date()).subtract(6, "days"), moment(new Date())],
"Last 30 Days": [moment(new Date()).subtract(29, "days"), moment(new Date())],
"This Month": [moment(new Date()).startOf("month"), moment(new Date()).endOf("month")],
"Last Month": [
moment(new Date())
.subtract(1, "month")
.startOf("month"),
moment(new Date())
.subtract(1, "month")
.endOf("month")
],
"Last Year": [
moment(new Date())
.subtract(1, "year")
.startOf("year"),
moment(new Date())
.subtract(1, "year")
.endOf("year"),
]
}
},
cb
).on;
cb(start, end);
现在假设#reportrange 包含区域是body 标签。我想应用类似这个函数并关闭当前打开的 daterangepicker。
$('body').on('mouseleave', function(){
$('#reportrange').trigger('hide.daterangepicker'); //it doesn't work.
});
一个简单的解决方案。
$('body').on('mouseleave', function(){
$('#reportrange').hide();
});
工作并隐藏该特定区域,但用户必须单击两次才能再次打开该日期范围选择器。由于第一次单击再次关闭选择器(切换),第二次单击正在打开它。
为了正确理解它,如果你去这个 JSFiddle https://jsfiddle.net/rg7fh1a8/ 现在,如果用户将鼠标悬停在它的区域之外,我想关闭这个 daterangepicker。
【问题讨论】:
-
你在取消按钮上尝试
triggeringclick? -
没有。一旦用户用鼠标离开包含区域,我需要默认调用它。
-
对。不要调用
hide(),而是在单击按钮上调用trigger(),这也应该隐藏对话框,但无需单击两次。 -
能提供sn-p的代码吗?我也尝试了触发器,但没有得到如何调用 daterangepicker 内部方法。目前,上述方法指向 jQuery 而不是 daterangepicker。我知道它必须使用正确的引用传递方式来做一些事情。
-
您需要提供minimal reproducible example。我没有您的 HTML 或您包含的脚本。
标签: javascript jquery daterangepicker