0

私は jQuery プラグインの日付ピッカーを使用していますが、ユーザーがクライアントで今日の日付を変更できるようにしたくありません。それで、今日の日付(選択した日付ではありません!)をサーバーの日付に設定する方法を考えていました。以下のコードは、デフォルトの「SELECTED」日付値を設定するだけです

defaultDate: myServerDate

...私もこれを試しました:

myDatepicker.datepicker('setDate', myServerDate);

どちらの試みも、デフォルトでそれらの日付を選択することになります。しかし、実際に今日の日付を実際に変更するものはありません。

乾杯、帯

4

1 に答える 1

1

見た目では、これはハッキングなしでは不可能jquery.ui.datepicker.jsです。以下は、そのファイルの縮小されていないバージョンからの抜粋です。

/* Generate the HTML for the current state of the date picker. */
_generateHTML: function(inst) {
  var today = new Date();
  today = this._daylightSavingAdjust(
    new Date(today.getFullYear(), today.getMonth(), today.getDate())); // clear time

上記からわかるようtodayに、JavaScript の Date オブジェクトから直接計算されるため、その値を渡す方法はありません...現在の日付を変更するのは非常に奇妙な要求であることが主な理由だと思います。

これには 4 つの解決方法があり、そのうち 3 つはあまり良くありません。考慮した順に並べました。1 が最高、4 ​​が最悪/最も複雑です。

  1. 参加して、自分の機能を実装/報告することができsetTodayます - http://bugs.jqueryui.com/

  2. _generateHTML 関数を独自のコードにコピーし、RodrigoCout が述べた方法を使用して拡張できます: jQuery DatePicker Issue: Set current date

  3. jquery.ui.datepicker.jsコードの代わりに日付を定義できるようにハッキングできますvar today = new Date();。jQuery UI の次のバージョンにアップグレードする時期になったときに自分 (および他の開発者) に警告するために、アプリケーション内のコメントにこのオーバーライドを明確に書き留めておく必要があります。

  4. datepicker プラグインと一緒に実行する js ハックを構築し、カレンダーを表示するたびに出力を書き換えることができます。つまり、そのクラスを検出$('.ui-datepicker-today')して削除し、兄弟に沿ってステップ実行してデータ属性をチェックすることにより、配置する場所を再計算します...これは、日付ピッカーの内部計算に影響を与えず、実行が複雑になるため、最悪の方法です。

于 2012-09-20T11:27:44.733 に答える