3

フィールドHTMLをdivに追加するだけで、日付ピッカーを動的に生成しています。

<input type="text" value="" readonly="readonly" name="tier[2][publication_date]" id="publication_date_2" size="10" maxlength="10" tabindex="6" class="publication_date hasDatepicker">
<input type="hidden" name="tier[2][publication_date_db]" id="publication_date_db_2" value="">

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

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

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

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

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

人口が発生するために。

4

2 に答える 2

5

ドキュメントにはセレクターが必要であると記載されていますが、jQueryオブジェクトを取得することもできるため$(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)その入力に要約されるため、セレクター、jQueryオブジェクト、またはDOM要素である可能性があり、それでも問題なく機能します:)

于 2010-09-07T10:07:42.740 に答える
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'
    });
});
于 2010-09-07T10:06:24.527 に答える