2009-07-07 23 views
6

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

"前" または "次"、カレンダーはずのにOnclick: - それに応じて、次/前の月へ

  1. 移動します。
  2. その月の最初の日を現在選択されている日付に設定します。

問題とデート

  • アラートが#2です。

    これを行うにはsetDateを使用しており、無限再帰で終了しています。なぜなら、onChangeMonthYear内でsetDateを呼び出すからです。また、setDateは内部でChangeMonthYearを発生させます。

    prev/nextをクリックすると、どのように3つのことを達成できますか?

  • 答えて

    7

    はあなたが無限ループを防ぐために、あなたのイベントハンドラで問い合わせることができますフラグを設定してみてください:

    var changingDate = false; 
    $('.selector').datepicker({ 
        onChangeMonthYear: function(year, month, inst) { 
         if (changingDate) { 
          return; 
         } 
         changingDate = true; 
         // your setDate() call here 
         changingDate = false; 
        } 
    }); 
    
    1

    無限再帰が間違っ月知らせることを意味します。
    あなたが減少していることを確認してくださいmonth

    0
    onChangeMonthYear: function(year, month, inst){ 
        $(this).datepicker("setDate", new Date(year, month-1, 1)); 
    }