読者です 読者をやめる 読者になる 読者になる

モーダルウィンドウ使用時の datepicker

Wicket のモーダルウィンドウ使用時に注意しなければならないのは、
呼び出し Page とモーダルウィンドウの Panel 両方で jQuery Datepicker を配置したときである。
モーダルウィンドウを起動したとき、モーダルウィンドウの中で Datepicker が効かなかったり、
モーダルウィンドウを起動後、むりやり Datepicker を再配備しても、モーダルウィンドウのを閉じた後に
Page の Datepicker が効かなくなったりした。

対処:

モーダルウィンドウ起動後、描画が終わったら、、

$("#ui-datepicker-div").remove();
$.datepicker.setDefaults( $.datepicker.regional["ja"] );
$("input[class='datepicker']").datepicker({
   prevText:"前月", nextText:"翌月",
   changeMonth: true,
   changeYear: true, yearRange: '-4:+6',
});

モーダルウィンドウを閉じたら、

$("#ui-datepicker-div").remove();
$("input[class='datepicker']").removeClass("hasDatepicker");
$("input[class='datepicker']").datepicker({
   prevText:"前月", nextText:"翌月",
   changeMonth: true,
   changeYear: true, yearRange: '-4:+6',
});

という datepicker設置で作られるdocumentを削除して、
datepicker にされた inputタグを、一度 hasDatepicker と付与されたクラス属性を削除してから
datepicjer 再定義をする。

datepicker の destroy かと思ったけどこの方が確実みたい。