2011-03-30 72 views
0

我希望它在更改/制作日期时提醒“确定”。但我得到两个警报,而不是一个?jQuery daterangepicker:执行两次警报?

我该如何解决这个问题?

下面的代码:

$(document).ready(function(){ 
     $('#datePicking').daterangepicker({ 
      arrows:true, 
      onChange: function(){     
       alert('ok'); 
      } 
     }); 
}); 

我使用jQuery 1.3.2和1.7.2 UI

+2

请修复你的鳕鱼,因为它有点难以阅读。 $('#Viewer')alert('ok'); < - 这是什么意思?为什么只需要调用$(“#viewer”)? – corroded 2011-03-30 03:14:07

回答

1

看来,这是已知问题的插件。

斯科特(长丝)在filamentgroup

我现在添加的onChange 一个回调函数,你也许能够 使用。请记住,它可能不适合 您的需求正是因为它会 火灾发生在 输入的每一个变化。一键式快捷键范围将 实际上火灾2变化回调 因为这个插件只是触发每个日期选择器 日期改变,一个 在同一时间。一旦这个插件是由jQuery用户界面采用 ,我相信我们会的工作, 一部分出来,有rangepicker 射击事件,一个小部件。目前, 您需要设置您的网页 这个问题。

解决此问题的方法可能是使用$('#datePicking').blur()而不是插件的onChange选项。

+0

事实上,当u点击“过去7天”和“昨天”的选项也它触发两次(即使用AJAX调用来检索从数据库中选择日期的结果。所以,Ajax调用触发两次) – user655334 2011-03-30 04:11:38

+0

可你刚刚解释。在那里我可以把模糊() – user655334 2011-03-30 04:28:17

+0

@ user655334:daterangepicker后,您只需IT连锁:'$( '#datePicking')daterangepicker({..})模糊(函数(){...});' – dgilland 2011-03-30 04:42:07

0

其更好地改用OnClose中的的onChange

$(document).ready(function(){ 
    $('#datePicking').daterangepicker({ 
     arrows:true, 
     onClose : function(){     
      alert('ok'); 
     } 
    }); 
}); 

试试这个,它可以帮助

0

就我而言,我使用daterangepicker有棱有角。我的目的是观察存储日期范围值的模型中的任何更改,并稍后将其保存为AJAX调用。我遇到同样的问题,因为每当日期发生变化时它会两次触发事件,即使它只是'今天':一旦它是startDate和endDate属性的对象,而另一次它是一个字符串。

可以利用的是一种优势。

$scope.$watch(
    'rangeOfDate', 
    function (newValue) { 
     // Due to a known bug of open source library daterangepicker, the event is hit twice 
     //upon change. Once it is an object, and once it is a string. So, use appropriately. 
     var selectedDateRange = new Object(); 
     if (typeof (newValue) == 'object') { 
      selectedDateRange.startDate = new Date(newValue.startDate).toLocaleDateString(); 
      selectedDateRange.endDate = new Date(newValue.endDate).toLocaleDateString(); 
      //Do as you wish with this custom object 
     } 
     else if (typeof (newValue) == 'string') { 
      alert("string"); 
     }    
    }, 
    false);