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 にされた inputタグを、一度 hasDatepicker と付与されたクラス属性を削除してから
datepicjer 再定義をする。
datepicker の destroy かと思ったけどこの方が確実みたい。