テキストボックスを動的に作成しましたが、クリックするとそれぞれにカレンダーを表示できるようにしたいと考えています。私が使用しているコードは次のとおりです。
$(".datepicker_recurring_start" ).datepicker();
すべてのテキストボックスにdatepicker_recurring_startというクラスがありますが、これは最初のテキストボックスでのみ機能します。
あなたの助けは大歓迎です!
テキストボックスを動的に作成しましたが、クリックするとそれぞれにカレンダーを表示できるようにしたいと考えています。私が使用しているコードは次のとおりです。
$(".datepicker_recurring_start" ).datepicker();
すべてのテキストボックスにdatepicker_recurring_startというクラスがありますが、これは最初のテキストボックスでのみ機能します。
あなたの助けは大歓迎です!
ここにトリックがあります:
$('body').on('focus',".datepicker_recurring_start", function(){
$(this).datepicker();
});
$('...selector..').on('..event..', '...another-selector...', ...callback...);
構文の意味:イベント(この例では 'focus' )
のリスナーを...selector..
(この例では the) に追加します。セレクター(この例では) に一致する一致するノードのすべての子孫に対して、イベント ハンドラー(この例ではインライン関数) を適用します。body
..event..
...another-selector...
.datepicker_recurring_start
...callback...
http://api.jquery.com/on/と、特に「委任されたイベント」に関するセクションを参照してください。
以下の私にとって、jqueryは機能しました:
「本文」をドキュメントに変更する
$(document).on('focus',".datepicker_recurring_start", function(){
$(this).datepicker();
});
スカファンドリに感謝
注:IDがフィールドごとに異なることを確認してください
.datepicker();
他のテキストボックス要素を動的に作成した後、もう一度実行する必要があります。
要素を DOM に追加する呼び出しのコールバック メソッドで行うことをお勧めします。
JQuery Load メソッドを使用してソースから要素を取得し、それらを DOM にロードするとします。次のようにします。
$('#id_of_div_youre_dynamically_adding_to').load('ajax/get_textbox', function() {
$(".datepicker_recurring_start" ).datepicker();
});
動的要素の新しいメソッドはMutationsObserverです。次の例では、underscore.jsを使用して ( _.each ) 関数を使用しています。
MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
var observerjQueryPlugins = new MutationObserver(function (repeaterWrapper) {
_.each(repeaterWrapper, function (repeaterItem, index) {
var jq_nodes = $(repeaterItem.addedNodes);
jq_nodes.each(function () {
// Date Picker
$(this).parents('.current-repeateritem-container').find('.element-datepicker').datepicker({
dateFormat: "dd MM, yy",
showAnim: "slideDown",
changeMonth: true,
numberOfMonths: 1
});
});
});
});
observerjQueryPlugins.observe(document, {
childList: true,
subtree: true,
attributes: false,
characterData: false
});
他の解決策はどれもうまくいきませんでした。私のアプリでは、jquery を使用して日付範囲要素をドキュメントに追加し、datepicker を適用しています。そのため、何らかの理由で機能するイベント ソリューションはありませんでした。
これが最終的に機能したものです:
$(document).on('changeDate',"#elementid", function(){
alert('event fired');
});
これが私を少し後退させたので、これが誰かを助けることを願っています.
$( ".datepicker_recurring_start" ).each(function(){
$(this).datepicker({
dateFormat:"dd/mm/yy",
yearRange: '2000:2012',
changeYear: true,
changeMonth: true
});
});