-2

開始日と終了日のコントロールで jquery を使用して日付機能を作成しようとしています。開始日を選択したいのですが、開始日より前に終了日になると、私のコードを無効にするために前の日付が来ます。

$( "#" + TxtStrtDate,"#" + TxtExpDte" ).datepicker({
    defaultDate: "+1w",
    changeMonth: true,
    numberOfMonths: 3,
    onSelect: function( selectedDate ) {
        var option = this.id == "abc" ? "minDate" : "maxDate",

        instance = $( this ).data( "datepicker" ),
        date = $.datepicker.parseDate(
            instance.settings.dateFormat ||
        $.datepicker._defaults.dateFormat,
        selectedDate, instance.settings );

        dates.not( this ).datepicker( "option", option, date );
    }
});

私のコードの間違いは何ですか?

4

2 に答える 2

2

TxtStrtDateとが変数であると仮定するとTxtExpDte、要素を参照する方法は無効です。

これに更新:

$("#"+TxtStrtDate+", #"+TxtExpDte).datepicker({
...
});

提案コードを使用したこのフィドルは問題なく動作します!

現在のコードのないこの Fiddleは、機能しないことを証明しています!


それらが実際に要素 ID である場合は、次を使用します。

$("#TxtStrtDate, #TxtExpDte").datepicker({
...
});

この実用的なフィドルの例を参照してください!

于 2012-06-09T14:59:32.627 に答える
2

これらはサーバー コントロールであるとおっしゃっていたので、ASP.NET を使用していると思います。これが当てはまり、MasterPages を使用している場合、MasterPages はコントロールの ID をマングルするため、次の操作を行う必要があります。

$('#<%= TxtStrtDate.ClientID %>, #<%= TxtExpDte.ClientID %>').datepicker({
...
});

それ以外の場合は、セレクターに余分な " があり、実際に JavaScript 変数でない限り、ID を引用符で囲む必要があります。

$( "#" + TxtStrtDate,"#" + TxtExpDte" )

次のように変更する必要があります。

$("#TxtStrtDate, #TxtExpDte")
// or if they are javascript variables
$("#" + TxtStrtDate + ", #" + TxtExpDte)

編集

あなたのコメントによると、jquery datepicker の日付範囲バージョンを使用したいようです。そのためには、次のことを行う必要があります。

$( "#TxtStrtDate" ).datepicker({
    defaultDate: "+1w",
    changeMonth: true,
    numberOfMonths: 3,
    onSelect: function( selectedDate ) {
        $( "#TxtExpDte" ).datepicker( "option", "minDate", selectedDate );
    }
});
$( "#TxtExpDte" ).datepicker({
    defaultDate: "+1w",
    changeMonth: true,
    numberOfMonths: 3,
    onSelect: function( selectedDate ) {
        $( "#TxtStrtDate" ).datepicker( "option", "maxDate", selectedDate );
    }
});

詳細については、jquery ui サイトの日付範囲のデモをご覧ください。

于 2012-06-09T15:05:51.523 に答える