2012-02-08 116 views
0

那么,我知道有很多关于它的帖子,但我迄今为止尝试了很多解决方案,但无法使其工作。会发生什么情况是,当我克隆div时,使用datepicker克隆的字段会同时发生变化,因此,不管我在一个字段中选择的日期是什么日期,都会在另一个字段中。 我错过了什么,所以我可以重置值新的?克隆日期选择器

$(document).ready(function() { 
$('#btnAdd').click(function() { 

$('.datepicker').datepicker('destroy'); 

var num = $('.clonedInput').length; 
var newNum = new Number(num + 1); 
var newElem = $('#input' + num).clone().attr('id', 'input' + newNum); 

newElem.find('#label_val_ini label').attr('for', 'val_ini' + newNum); 
newElem.find('#input_val_ini input').attr('class', 'calendario' + newNum).attr('name', 'val_ini[]' + newNum).val(''); 
newElem.find('#input_val_ini input').attr('class', 'calendario' + newNum).attr('class', 'calendario' + newNum).val(''); 


newElem.find('#label_val_fim label').attr('for', 'val_fim' + newNum); 
newElem.find('#input_val_fim input').attr('class', 'calendario' + newNum).attr('name', 'val_fim[]' + newNum).val(''); 
newElem.find('#input_val_fim input').attr('class', 'calendario' + newNum).attr('class', 'calendario' + newNum).val(''); 
$('#input' + num).after(newElem); 
$('#btnDel').attr('disabled',false); 
if (newNum == 50) 
$('#btnAdd').attr('disabled',true); 
$('.datepicker').datepicker(); 
}); 
$('#btnDel').click(function() { 
var num = $('.clonedInput').length; 
$('#input' + num).remove();  
$('#btnAdd').attr('disabled',false); 
if (num-1 == 1) 
$('#btnDel').attr('disabled',true); 
}); 
$('#btnDel').attr('disabled',true); 
}); 

<form action="inclui_pacote.php" method="post" id="sign-up_area"> 
<div id="input1" style="margin-bottom:4px;" class="clonedInput"> 
<table> 
<tr> 
<td width="90"><label for="val_ini">Início de validade:</label></td> 
<td width="144"><input name="val_ini[]" type="text" class="datepicker" tabindex="1" value="" size="10" maxlength="10" id="input_val_ini"/></td> 

<td width="90"><label for="val_fim">Fim da validade:</label></td> 
<td width="144"><input name="val_fim[]" type="text" class="datepicker" tabindex="1" value="" size="10" maxlength="10" id="input_val_fim"/></td> 
</tr> 
</table> 
</div> 
    <input type="button" id="btnAdd" value="+ Hotel" /> 
    <input type="button" id="btnDel" value="- Hotel"/> 
    <input name="cadastrar" type="submit" value="Cadastrar"> 
    </form> 

回答

0

为什么要克隆datePicker?

从一开始就创建另一个datePicker,如果需要隐藏它,并在第一个datePicker的值被更改时更改它的值将不会执行该任务吗?

问题是,一旦插件被应用,datePicker就不再是单个DOM对象。因此,克隆原始DOM元素,即使使用其所有datePicker数据也不会创建对象。

另一种解决方案是,将克隆原始的datePicker,创建一个新的INPUT元素,应用datePicker,然后再次给它第一个DatePicker的值。

0

jQuery创建一个类一个ID,并且都被克隆;克隆中也不应该存在。

$('.calendar:last').removeClass('hasDatepicker').attr('id',"").datepicker(); 

我希望这适合你,就像它为我做的那样。