jQuery UI Datepicker:年ごとにカスタムナビゲーション要素を追加する

顧客が彼の手と足を休ませたときに私が問題に遭遇したとき、何年もの間ナビゲートする標準的な方法、すなわち ドロップダウンリストから。 彼は私に望ましい結果のイメージを与えて、締め切りを設定しました。



画像



画像では、単一矢印の形のナビゲーション要素が月ごとに「移動」し、二重矢印が前/来年に移動するように設計されています。 この投稿では、この結果を達成する方法を説明します。



解決策


この一見単純なタスクの解決策を非常に長い間検索した結果、この日付ピッカーには順序付けられた「2クリック」を実装するためのオプション/メソッドがないことが明らかになりました。 この検索により、「ボタンパネル」にボタンを追加したり、既存のナビゲーション要素のステップ(月数)を変更したりすることができました。 しかし、そうではありませんでした。 カレンダーヘッダーの月のナビゲーションアイテムの横に、さらに2つのボタンを追加する必要がありました。



次に、同様の要素をさらに人為的に追加するために、月ごとのナビゲーションがどのように実装されているかを確認することにしました。 firebugに移動し、前月に移動するボタンを見つけると、次のように表示されます。







:



._adjustDate('#tbLoungeDate', -1, '




Y ');







, , . . header . , /. , - DIV "ui-datepicker-header" . /. :



var addPrevNextYearButtons = function (input) { setTimeout(function () { var btnPrev = $("<a title='Prev year'><span>prev year</span></a>"); btnPrev.addClass("ui-datepicker-prev-year ui-corner-all"); btnPrev.click(function () { $.datepicker._adjustDate(input, -1, 'Y'); }); var btnNext = $("<a title='Next year'><span>next year</span></a>"); btnNext.addClass("ui-datepicker-prev-year ui-corner-all"); btnNext.click(function () { $.datepicker._adjustDate(input, 1, 'Y'); }); var datepickerHeader = $(input).datepicker("widget").find('.ui-datepicker-header'); datepickerHeader.append(btnPrev); datepickerHeader.append(btnNext); }, 1); }; $('#tbLoungeDate').datepicker({ beforeShow: function (input, inst) { addPrevNextYearButtons(input); }, onChangeMonthYear: function (year, month, inst) { addPrevNextYearButtons(inst.input[0]); } });





, . , / "click" header . , .



. . .




 
      



:



._adjustDate('#tbLoungeDate', -1, '




Y ');







, , . . header . , /. , - DIV "ui-datepicker-header" . /. :



var addPrevNextYearButtons = function (input) { setTimeout(function () { var btnPrev = $("<a title='Prev year'><span>prev year</span></a>"); btnPrev.addClass("ui-datepicker-prev-year ui-corner-all"); btnPrev.click(function () { $.datepicker._adjustDate(input, -1, 'Y'); }); var btnNext = $("<a title='Next year'><span>next year</span></a>"); btnNext.addClass("ui-datepicker-prev-year ui-corner-all"); btnNext.click(function () { $.datepicker._adjustDate(input, 1, 'Y'); }); var datepickerHeader = $(input).datepicker("widget").find('.ui-datepicker-header'); datepickerHeader.append(btnPrev); datepickerHeader.append(btnNext); }, 1); }; $('#tbLoungeDate').datepicker({ beforeShow: function (input, inst) { addPrevNextYearButtons(input); }, onChangeMonthYear: function (year, month, inst) { addPrevNextYearButtons(inst.input[0]); } });





, . , / "click" header . , .



. . .








:



._adjustDate('#tbLoungeDate', -1, '




Y ');







, , . . header . , /. , - DIV "ui-datepicker-header" . /. :



var addPrevNextYearButtons = function (input) { setTimeout(function () { var btnPrev = $("<a title='Prev year'><span>prev year</span></a>"); btnPrev.addClass("ui-datepicker-prev-year ui-corner-all"); btnPrev.click(function () { $.datepicker._adjustDate(input, -1, 'Y'); }); var btnNext = $("<a title='Next year'><span>next year</span></a>"); btnNext.addClass("ui-datepicker-prev-year ui-corner-all"); btnNext.click(function () { $.datepicker._adjustDate(input, 1, 'Y'); }); var datepickerHeader = $(input).datepicker("widget").find('.ui-datepicker-header'); datepickerHeader.append(btnPrev); datepickerHeader.append(btnNext); }, 1); }; $('#tbLoungeDate').datepicker({ beforeShow: function (input, inst) { addPrevNextYearButtons(input); }, onChangeMonthYear: function (year, month, inst) { addPrevNextYearButtons(inst.input[0]); } });





, . , / "click" header . , .



. . .







All Articles