2014-09-21 3 views
1

У меня есть приложение со всеми выпадающими коробками, настроенных ВЫБ.2 плагиным, очевидно, как это:инициализация ВЫБ.2 выпадающего меню на Jquery DatePicker

$("select").select2(); 

Однако, выберите элемент на Jquery DatePicker не настроен. И я не мог понять, где инициализировать это в функции jquery datepicker. Следующее - это то, что я хочу достичь. Я хочу функцию, которая может заменить init, который может получить элемент datepicker dom.

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

Я ценю вашу помощь. Благодарю.

ответ

3

Проблема, с которой вы сталкиваетесь, заключается в том, что Datepicker не имеет функции обратного вызова после показа. То есть, нет доступных методов/параметров, которые могут запускать код после отображения даты.

Существует некоторая дискуссия и некоторые возможные ответы в jQuery Datepicker "After Update" Event or equivalent

Таким образом, на данный момент, вы можете сделать эту работу за счет расширения Datepicker, как это:

<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

Смежные вопросы