2

我正在使用日期范围选择器 javascript 库从用户中选择日期范围

                  $('#date_range').daterangepicker({
                    arrows:true,
                    dateFormat: 'd-M-yy',
                    rangeSplitter: 'to',
                    datepickerOptions: {
                         changeMonth: true,
                         changeYear: true,
                         minDate: new Date("01/01/2011") //Account created date
                    },
                    closeOnSelect: true,
                    onChange: function(){
                                    //ajax call goes here

                                    }
                  });

在我的 ajax 调用中,我正在使用日期范围更新屏幕。但是这个 on change 函数运行两次,ajax 返回旧日期值。如果需要将 ajax 功能与日期范围选择器的更改功能一起使用。

如果有人找到了一次使用 onchange 函数的解决方案,并且从现在到现在都是正确的,请告诉我。提前致谢

4

2 回答 2

1

阅读您找到的文档

onChange:函数,每当日期输入更改时执行的回调(在范围选择上可能发生两次)。

我已经设置了一个小演示http://jsfiddle.net/ByzYX/16/

所以 onChange 似乎是您解决方案的错误回调。我不确定您要在屏幕上更新什么以及为什么要执行 ajax 请求,但您可以尝试使用 if 条件仅执行一次 ajax 调用。

所以onOpen设置一个标志,true并在执行 ajax 调用后将其设置为false. onChange检查这个标志。

于 2011-03-28T07:25:39.923 回答
1

我是这样做的:

$('#date_range').daterangepicker({
    "startDate": "01/01/2016",
    "endDate": "07/27/2016"
    }, function(start, end, label) {
        $.ajax({
            url:"/your_url",
            method: "GET", // or POST
            dataType: "json",
            data: {from: start.format('YYYY-MM-DD'), to: end.format('YYYY-MM-DD')},
            success:function(result) {
                console.log("sent back -> do whatever you want now");
            }
        });
    });

这个函数的工作方式类似于$("#date_range").change(function(){});,但它也有一些参数。

您可能希望将日期字符串更改为您收到它的有效日期,以防您想要进行一些过滤。

我在http://www.daterangepicker.com/上找到了这个函数,看看那里有更多的例子!:)

于 2016-07-27T13:56:17.373 回答