2014-09-21 75 views
1

我有所有的下拉由選擇2插件定製箱的應用,顯然是這樣的:初始化選擇2下拉jQuery的日期選擇器

$("select").select2(); 

然而,在一個jQuery日期選擇器選擇元素不定製。而且我無法弄清楚jQuery datepicker函數中的初始化位置。以下是我想要的。我想要一個可以取代可以獲得datepicker dom元素的init的函數。

$(".datepickerInput").datepicker({ 
    init : function(datepickerElement) { 
    datepickerElement.find("select").select2(); 
    } 
}); 

我感謝您的幫助。謝謝。

回答

3

您面臨的問題是Datepicker沒有「after show」回調函數。也就是說,沒有可用的方法/選項,可以在datepicker被顯示後運行代碼。

有一些討論和jQuery Datepicker "After Update" Event or equivalent

一些可能的答案所以,現在,你可以通過擴展日期選擇器,這樣使這項工作:

<p>Date: <input type="text" id="datepicker"></p> 

<script> 
$(document).ready(function() { 

    // Code from the related question. Used the answer from @Markus 
    $.datepicker._updateDatepicker_original = $.datepicker._updateDatepicker; 
    $.datepicker._updateDatepicker = function(inst) { 
    $.datepicker._updateDatepicker_original(inst); 
    var afterShow = this._get(inst, 'afterShow'); 
    if (afterShow) 
     afterShow.apply((inst.input ? inst.input[0] : null)); // trigger custom callback 
    } 

    // Now that we have `afterShow`, we can initialize Select2. 
    $("#datepicker").datepicker({ 
     changeMonth: true, 
     changeYear: true, 
     afterShow: function() { 
      $(".ui-datepicker select").select2(); 
     } 
    }); 
}); 
</script> 
+0

謝謝,現在工作:)這afterShow函數應該在datepicker中真正考慮。 – besabestin 2014-09-22 19:57:11