3


1

altFieldsを使用してjQuery Datepickerを動的に生成する

フィールドのHTMLをdivに追加するだけで、動的にdatepickerを生成しています。


日付の保存方法により、ユーザーが選択したデータベース形式の日付を保存するdatepicker用の別のフィールド(altfield)があります。

複数の日付ピッカーの選択を処理するには、クラスを割り当て、livequeryを使用して、ページの読み込み後にonClicksを検出します。

$(".publication_date").livequery(function() {
                $(this).datepicker({
                    dateFormat: "dd M yy",
                    changeYear: true,
                    changeMonth: true,
                    onSelect: function(dateText, inst) {
                        console.log(inst);
                    }
                });
            });

私はその点で問題があります、日付ピッカーはどのaltfieldを取り込むのかをどのように知るのですか? 単一の日付ピッカーでは、通常、次のものが含まれます。

altField: '#start_date_datepicker_altfield',
altFormat: 'yy-mm-dd',

人口が発生するため。

2 Answer


5


ドキュメントにはセレクターが必要であると書かれていますが、jQueryオブジェクトも使用できるため、http://api.jquery.com/next/ [$(this).next()]を使用して非表示にしますこのようなフィールド:

$(".publication_date").livequery(function() {
   $(this).datepicker({
      altField: $(this).next(),
      altFormat: 'yy-mm-dd',
      dateFormat: "dd M yy",
      changeYear: true,
      changeMonth: true,
      onSelect: function(dateText, inst) {
        console.log(inst);
      }
   });
});

ほとんどのプラグインは `$(input)`に要約されるため、その入力はセレクター_or_ jQueryオブジェクトまたはDOM要素であり、それでも問題なく動作します:)


0


livequeryを使用したことはありませんが、その外観から、一致した要素の「id」を「this.id」から取得できます。 HTMLの例では、 "publication_date_2"になります。これから、altfield "publication_date_db_2"に必要なIDを比較的簡単に作成できます(フィールドの命名戦略を変更することで、さらに簡単になります)。

だから多分:

$(".publication_date").livequery(function() {
    $(this).datepicker({
        dateFormat: "dd M yy",
        changeYear: true,
        changeMonth: true,
        onSelect: function(dateText, inst) {
            console.log(inst);
        },
        altField: "#" + this.id.replace("_date_", "_date_db_"),
        altFormat: 'yy-mm-dd'
    });
});