1

その月にフライトがない場合、jQuery datepicker の月のドロップダウンから月を削除するように依頼されました。私の最初の考えは、beforeShowイベントで、ドロップダウンに変更イベント ハンドラーを追加して、その年の月ごとに monthHasFlights() という関数を呼び出すことです (初めて手動で呼び出します)。日付ピッカーがロードされます)。monthHasFlights() が false を返す場合、その月を削除します。 問題は...ハンドラーが接続されないことです。

そのため、beforeShow イベント ハンドラー内には次のようなものがあります。

$('.ui-datepicker-year').change(function(){setDropdownMonths()});

しかし、この行がfirebug/toolsで実行されているのを見ても、イベントは決してアタッチしません。jQueryイベントバインディングについての私の理解は、変更イベントに何度でも割り当てることができ、ハンドラーは作成した順序で起動するということです。 . しかし、私はそれを間違っていると思いますか? イベント ハンドラーをアタッチしようとしたときにドロップダウンがまだ存在しないということですか? setTimeout を 100 に設定してみましたが、まだイベントがアタッチされません。任意の提案をいただければ幸いです。

4

1 に答える 1

-1

考えられる問題: 初期化される前に変更しようとしdatepickerました。あなたのタスクを達成する最善の方法は、 inicializing のコード内に関数呼び出しを追加することだと思いますdatapicker

また、.change イベントは、アタッチされている要素の状態が変化したときに発生します。あなたの HTML と JQuery コードが確実に言うことはわかりませんが、おそらく、この問題が原因でイベントが発生しません。

$('.ui-datepicker-year')この要素の HTML に ID ではなく CLASS があると確信していますか?


更新: datapicker で役立つイベントを見つけました:

beforeShow      function(input, inst)

入力フィールドと現在の datepicker インスタンスを受け取り、datepicker を更新するオプション オブジェクトを返す関数にすることができます。日付ピッカーが表示される直前に呼び出されます。コード例

beforeShow イベントを init オプションとして処理するコールバック関数を提供します。

$('.selector').datepicker({
   beforeShow: function(input, inst) { ... }
});

したがって、データピッカーの初期化中にイベントを使用して、リストから空の月を除外する関数を呼び出すことができます!

于 2012-06-20T16:31:29.227 に答える