Javascript 复制jQuery日期选择器
Javascript 复制jQuery日期选择器,javascript,jquery,Javascript,Jquery,datepicker函数仅对创建的第一个输入框起作用 我试图通过克隆包含日期选择器的div来复制它 <a href="#" id="dupMe">click</a> <div id="template"> input-text <input type="text" value="text1" id="txt" /> date time picker <input type="text" id="example" value="(add
datepicker
函数仅对创建的第一个输入框起作用
我试图通过克隆包含日期选择器的div
来复制它
<a href="#" id="dupMe">click</a>
<div id="template">
input-text <input type="text" value="text1" id="txt" />
date time picker <input type="text" id="example" value="(add date)" />
</div>
最奇怪的是,在文档上。ready
我有:
$('#template #example').datepicker();
$("#template #txt").click(function() { alert($(this).val()); });
如果我点击
#txt
,它会一直工作。我使用CSS类:
<input type="text" id="BeginDate" class="calendar" />
<input type="text" id="EndDate" class="calendar" />
用这种方式处理多个日历字段对我来说很有用。我建议只使用一个通用的类名。但是,如果出于某种原因反对此操作,还可以编写一个函数,为模板
div
(每次复制后调用)中的所有文本框创建日期选择器。比如:
function makeDatePickers() {
$("#template input[type=text]").datepicker();
}
我有一个非常类似的问题,经过几个小时的测试,我找到了一个解决方案。我复制了一段HTML代码,并将其插入到已经包含jQuery日期选择器日历的部分之后。起初我没有意识到的是,jQuery UI calendar在执行
.datepicker()
函数时修改了元素的类。结果是,当您尝试复制代码并为该新部分启动日历的新实例时,它失败了,因为根据CSS,已经有了一个实例。如果尝试使用.datepicker('destroy')
则无法销毁此重影实例,因为它实际上不存在。我通过重置HTML中日期选择器元素的类,然后将日期选择器添加到该元素中,解决了这个问题
下面是我使用的代码。希望这能为其他人节省一些时间
$('#addaddress').click(function() {
var count = $('.address_template').size();
var html = $('.address_template').eq(0).html();
$('#addaddress').before('<div class="address_template">' + html + '</div>');
$('.address_template H1').eq(count).html("Previous Address " + count);
$('.address_date').eq(count).attr("class","address_date");
$('.address_date').eq(count).attr("id","movein" + count);
$("#movein" + count).datepicker();
});
$('#addaddress')。单击(函数(){
变量计数=$('.address_template').size();
var html=$('.address_template').eq(0.html();
$('#addaddress')。在(''+html+'')之前;
$('.address_template H1').eq(count.html(“上一个地址”+count);
$('.address\u date').eq(count).attr(“class”,“address\u date”);
$('.address_date').eq(count).attr(“id”,“movein”+count);
$(“#movein”+count).datepicker();
});
我正在克隆的html有多个日期选择器输入
根据Ryan Stemkoski的回答和Alex King的评论,我提出了以下解决方案:
var clonedObject = this.el.find('.jLo:last-child')
clonedObject.find('input.ui-datepicker').each(function(index, element) {
$(element).removeClass('hasDatepicker');
$(element).datepicker();
});
clonedObject.appendTo('.jLo');
谢谢yall。我不太理解示例代码,但您有一个很好的观点-在重新初始化日期选择器之前,您需要删除
.hasDatepicker
类。然后在克隆的元素上重新初始化datepicker,它就可以正常工作了。
$('#addaddress').click(function() {
var count = $('.address_template').size();
var html = $('.address_template').eq(0).html();
$('#addaddress').before('<div class="address_template">' + html + '</div>');
$('.address_template H1').eq(count).html("Previous Address " + count);
$('.address_date').eq(count).attr("class","address_date");
$('.address_date').eq(count).attr("id","movein" + count);
$("#movein" + count).datepicker();
});
var clonedObject = this.el.find('.jLo:last-child')
clonedObject.find('input.ui-datepicker').each(function(index, element) {
$(element).removeClass('hasDatepicker');
$(element).datepicker();
});
clonedObject.appendTo('.jLo');