UIで、あるフォームエリアをコピーしていくようなのを作っています。
そのエリア内にinputでdatepicker割り当ててるんですが、コピー(クローン)した後に、datepickerがうまく出ない現象が出ていました。
うまく動かす(datepickerを有効にする)やり方を。
cloneする前にdatepickerを破棄する
割り当てられたdatepickerを破棄し、clone、またdatepicker割り当てでイケます。
//UIをクローンする(フォームの行を追加的な) function row_clone() { let block = $('ui-block'); picker_disable(); //ui-block内にあるinput name="noki" のdatepickerを破棄 $(block).clone().appendTo('mainarea'); //cloneする picker_init(); //終わったので再割り当て } //datepicker割り当て function picker_init() { $('input[name="noki"]).not('.hasDatePicker').datepicker({}); } //破棄する function picker_disable() { $('input[name="noki"]).datepicker("destroy"); }
うまくdatepickerが割り当たらない場合は、setTimeout()で数百ミリ秒後にpicker_init()を呼ぶとうまくいったりします。
setTimeout(function(){ picker_init(); },500);
コメント