jQuery datepicker clone()時に有効にするにcloneする前にdatepickerを破棄し、再度割り当てる

javascript

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);

コメント

タイトルとURLをコピーしました