jquery 在鼠标离开事件上关闭daterangepicker

xn1cxnb4  于 2023-10-17  发布在  jQuery
关注(0)|答案(4)|浏览(163)

我在应用程序中使用daterangepicker库。我想触发daterangepicker的内部方法。hide()一旦使用离开daterangepicker容器区域。我的代码看起来像这样。

  1. <body class="visual-sandbox">
  2. <div class="visual-rangepicker">
  3. <div id="reportrange" class="report-range">
  4. <div class="calendar-icon">
  5. <i class="glyphicon glyphicon-calendar fa fa-calendar"></i>
  6. </div>&nbsp;
  7. <span></span> <b class="caret caret-dropdown"></b>
  8. </div>
  9. </div>
  10. </body>
  11. $("#reportrange").daterangepicker(
  12. {
  13. startDate: start,
  14. endDate: end,
  15. opens: 'left',
  16. ranges: {
  17. // new Date(2017, 11, 1)
  18. Today: [moment(new Date()), moment(new Date())],
  19. Yesterday: [
  20. moment(new Date()).subtract(1, "days"),
  21. moment(new Date()).subtract(1, "days")
  22. ],
  23. "Last 7 Days": [moment(new Date()).subtract(6, "days"), moment(new Date())],
  24. "Last 30 Days": [moment(new Date()).subtract(29, "days"), moment(new Date())],
  25. "This Month": [moment(new Date()).startOf("month"), moment(new Date()).endOf("month")],
  26. "Last Month": [
  27. moment(new Date())
  28. .subtract(1, "month")
  29. .startOf("month"),
  30. moment(new Date())
  31. .subtract(1, "month")
  32. .endOf("month")
  33. ],
  34. "Last Year": [
  35. moment(new Date())
  36. .subtract(1, "year")
  37. .startOf("year"),
  38. moment(new Date())
  39. .subtract(1, "year")
  40. .endOf("year"),
  41. ]
  42. }
  43. },
  44. cb
  45. ).on;
  46. cb(start, end);

现在让我们假设包含#transange的区域是body标签。我想应用类似这个函数的东西并关闭当前打开的daterangepicker。

  1. $('body').on('mouseleave', function(){
  2. $('#reportrange').trigger('hide.daterangepicker'); //it doesn't work.
  3. });

一个简单的解决方案,如。

  1. $('body').on('mouseleave', function(){
  2. $('#reportrange').hide();
  3. });

工作并隐藏该特定区域,但用户必须单击两次才能再次打开该daterangepicker。第一次点击再次关闭选择器(切换),第二次点击打开它。
为了正确理解它,如果你去这个JSFiddle https://jsfiddle.net/rg7fh1a8/现在,如果用户悬停在它的区域之外,我想关闭这个daterangepicker。

3df52oht

3df52oht1#

我知道已经有一个公认的答案,但我认为这也可能是有用的,因为它使用了daterangepicker的本地隐藏功能,而不是模拟点击取消按钮:

  1. $(function(){
  2. $('.daterangepicker').mouseleave(function(){
  3. $('#reportrange').data('daterangepicker').hide();
  4. });
  5. });
qnakjoqk

qnakjoqk2#

此解决方案在daterangepicker中找到取消按钮,并以编程方式单击它。它假定daterangepicker库使用当前版本分配给其控件的默认类。这些类名是通过使用Chrome开发工具检查呈现的HTML中daterangepicker的元素找到的。
避免将onmouseleave放在主体本身上(除非您使用on和选择器)。我把它附加到这个例子中的类。

  1. $(function() {
  2. $('#reportrange').daterangepicker();
  3. });
  4. function init() {
  5. $('.daterangepicker').on("mouseleave", function() { $(this).find('.cancelBtn').click() });
  6. }
  7. $(init);
  1. <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  2. <script type="text/javascript" src="https://cdn.jsdelivr.net/jquery/latest/jquery.min.js"></script>
  3. <script type="text/javascript" src="https://cdn.jsdelivr.net/momentjs/latest/moment.min.js"></script>
  4. <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.min.js"></script>
  5. <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.css" />
  6. <div class="visual-rangepicker">
  7. <input id="reportrange" value="01/01/2015 - 01/31/2015">
  8. </div>
展开查看全部
tzdcorbm

tzdcorbm3#

如何在外部使用click事件实现close

  1. $('--DIV ID--').data('daterangepicker').hide();
  2. $('#reportrange').data('daterangepicker').hide(); // change to hidden state
  3. $('#reportrange').daterangepicker(); // change to hidden state AND reset options
  4. ex) <button onclick="$('#reportrange').data('daterangepicker').hide();">Close Test</button>
xwbd5t1u

xwbd5t1u4#

在日期范围内选择器可用hide.daterangepicker事件。转到http://www.daterangepicker.com/#events,检查隐藏事件。

相关问题