7

アプリで jquery ui datepicker を使用しています。インライン日付ピッカーを作成しました。onChangeMonthYearに問題があります。例を最小限に単純化しました。

「前へ」または「次へ」をクリックすると、カレンダーは次のようになります。

  1. それに応じて前月/翌月に移動します。
  2. その月の最初の日を、現在選択されている日付として設定します。
  3. その日付を知らせる

問題は#2にあります。

私はそれを行うためにsetDateを使用していますが、無限再帰になってしまいます。なぜなら、onChangeMonthYear 内で setDate を呼び出しているからです。また、setDate も内部で onChangeMonthYear を起動しています。

前へ/次へをクリックしたときに、これら3つのことをどのように達成できますか。

4

3 に答える 3

8

無限ループを防ぐために、イベント ハンドラーで照会できるフラグを設定してみてください。

var changingDate = false;
$('.selector').datepicker({
    onChangeMonthYear: function(year, month, inst) {
        if (changingDate) {
            return;
        }
        changingDate = true;
        // your setDate() call here
        changingDate = false;
    }
});
于 2009-07-07T13:21:29.997 に答える
1

無限再帰は、間違った月を通知していることを意味します。
から1を減らしていることを確認してくださいmonth

于 2014-08-13T17:12:35.597 に答える
0
onChangeMonthYear: function(year, month, inst){
    $(this).datepicker( "setDate", new Date(year, month-1, 1) );
}
于 2014-09-13T19:12:15.173 に答える