【问题标题】:Date Range Picker how to fire an event on entering a date日期范围选择器如何在输入日期时触发事件
【发布时间】:2025-12-10 22:25:03
【问题描述】:

我正在使用 Dan Grossman 的 daterangepicker。

http://www.dangrossman.info/2012/08/20/a-date-range-picker-for-twitter-bootstrap/

这是在我的网页中初始化的,现在我正在尝试编写一旦用户输入日期就会执行的 javascript。但是,我在让 daterangepicker 触发事件时遇到了困难。

我使用的代码是

$('#dateRange').on('changeDate', function(ev){
    alert(ev);
});

这里是初始化 daterangepicker 的代码

$('#dateRange').daterangepicker({
    ranges: {
        'Today': [moment(), moment()],
        'Yesterday': [moment().subtract('days', 1), moment().subtract('days', 1)],
        'Last 7 Days': [moment().subtract('days', 6), moment()],
        'Last 30 Days': [moment().subtract('days', 29), moment()],
        'This Month': [moment().startOf('month'), moment().endOf('month')],
        'Last Month': [moment().subtract('month', 1).startOf('month'), moment().subtract('month', 1).endOf('month')]
    },
    startDate: moment().subtract('days', 29),
    endDate: moment()
},
function(start, end) {
    $('#dateRange span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'));
});

我尝试了很多不同的方法来监听事件,例如 on.('blur')on.('enter'),但没有任何东西可以为我触发事件。

【问题讨论】:

    标签: javascript jquery twitter-bootstrap datepicker


    【解决方案1】:

    来自 daterangepicker.com:

    $('#daterange').on('apply.daterangepicker', function(ev, picker) {
        alert ('hello');
    });
    

    【讨论】:

      【解决方案2】:

      这部分是回调函数:

      function(start, end) {
          $('#dateRange span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'));
      }
      

      您可以在此函数中添加任何您希望在用户选择日期时执行的代码。您甚至可以自己定义一个回调函数并将其传递给日期范围选择器方法。

      示例:

      function myCallback(start, end) {
          $('#dateRange span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'));
          alert('hello world'); //etc, your code here
      }
      // attach daterangepicker plugin
      $('#dateRange').daterangepicker(options, myCallback);
      

      您甚至可以定义自己的自定义事件处理程序并在回调中触发它。

      例子

      $(document).on('myCustomEvent', function () {
          // your code here
      });
      
      $('#dateRange').daterangepicker({
      // .. //
      function(start, end) {
          $('#dateRange span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'));
          $(document).trigger('myCustomEvent');
      });
      

      【讨论】:

      • 非常感谢。这帮助很大!
      • 我正在为我的项目使用 cakephp 和相同的日期范围选择器,我如何使用这个 myCustonevetnt 将开始和结束日期发送到控制器?
      • @Neil S,当我不更改 daterangepicker 中的默认选定值时,我面临一个问题,当单击应用按钮时,回调函数未执行。有什么解决办法吗?
      • 如何调用 daterangepicker 方法 .hide 来自外部容器的 mouseleave 事件。我为此添加了另一个线程。 @tejashsoni111
      • @AakashKumar 我认为您应该在您的一些代码中发布一个新问题并在那里解释您的问题,以便每个人都可以建议您解决方案。