2011-03-30 76 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);