2

次のように、グローバルスクリプトファイルの入力に日付ピッカーを添付します。

$(document).on("focusin",".datePick", function () {
            $(this).datepicker({
                dateFormat: "dd/mm/yy",
                changeMonth: true,
                changeYear: true,
                onClose: function () { $(this).valid(); }
            });
        });

特定のページでは、モーダルダイアログ(jquery ui)に入力(datepickerで使用されます)があり、$。load()を介してそのページを呼び出し、他のページのdivに挿入します。

上記のコードは、他のページの静的入力に対しては非常にうまく機能しますが、上記のシーンリオの場合、日付ピッカーダイアログは正常に表示されますが、日付をクリックすると、エラーがスローされます(fは未定義です)編集:VS2010は「値を設定できませんプロパティ'currentDay':オブジェクトがnullまたは未定義です "

一部の人々はlive()メソッドを使用することを提案しましたが、非推奨のメソッドを使用したくありません。この問題についてどうすればよいですか?

前もって感謝します

オズグ

4

3 に答える 3

6

TJ VanToll's answer に関する私のコメントで述べたように、トリガーがバインドされている親要素が DOM のロード時に存在する限り、問題ありません。

例については、このフィドルを参照してください。

JS:

$(function(){
    $(document).on("focusin",".datePick", function () {
       $(this).datepicker({
            dateFormat: "dd/mm/yy",
            changeMonth: true,
            changeYear: true,
            onClose: function () { $(this).valid(); }
        });
    });

    $('#focusin').append('<input class="datePick" name="datepicker" />');

});​

HTML:

<div id="focusin"></div>​

ロード時にモーダル div が存在する限り、ロード後に入力をキャプチャできるはずです。

于 2012-07-10T15:43:38.873 に答える
0

livedelegate、または の使用onは jQuery UI ウィジェットでは機能しません。これは、必要な DOM ノードが存在した後にインスタンス化する必要があるステートフル プラグインであるためです。

追加のマークアップが挿入された後に日付ピッカーをインスタンス化することで、探していることを達成できます。これを行う例を次に示します - http://jsfiddle.net/tj_vantoll/qN8dG/2/

于 2012-07-10T15:32:45.717 に答える