Jquery 使用Live()将Datepicker应用于新创建的输入
我对jQuery日期选择器有问题。我的表单有一个“添加另一个”按钮,为用户提供一个额外的行,以便他们可以输入多个匹配项。我希望日期显示datepicker,并找到如何使用live()函数执行此操作Jquery 使用Live()将Datepicker应用于新创建的输入,jquery,datepicker,Jquery,Datepicker,我对jQuery日期选择器有问题。我的表单有一个“添加另一个”按钮,为用户提供一个额外的行,以便他们可以输入多个匹配项。我希望日期显示datepicker,并找到如何使用live()函数执行此操作 $(function() { $('#AddAnother').bind('click', function(event) { var tablerow = $('#CreateMatch tr:last').html();
$(function() {
$('#AddAnother').bind('click', function(event) {
var tablerow = $('#CreateMatch tr:last').html();
$('#CreateMatch tr:last').after('<tr>' + tablerow + '</tr>');
});
$('input.Datetime').live('click', function() {
$(this).datepicker({
showOn: 'focus',
changeMonth: true,
changeYear: true,
dateFormat: "dd-mm-yy"
}).focus();
});
});
所以你知道它在加载的第一个文本框上工作,但是动态绑定似乎不工作,并将其应用到新的文本框上 live()功能只涉及事件处理。因此,设置日期选择器的代码只会在“单击”事件发生时发生。datepicker代码此时不会设置它使用的处理程序
您可以尝试让事件处理程序在元素上保留一个标志(使用jQuery的“data()”功能)。如果您看到一个没有标志的元素,那么单击处理程序可以设置日期选择器和标志,并触发对自身的另一次“单击”。但是,我没有尝试过。这里的问题是,当应用
.datepicker()
时,它会向名为hasDatepicker
的输入中添加一个类,如果它发现这个类,就不会再次绑定。如果您在要克隆的行上打开一个日期选择器,它会添加这个类……而将该类复制到未来的行会使它们没有日期选择器
要解决此问题,请在克隆行时删除该类,如下所示:
$('#AddAnother').bind('click', function(event) {
$('#CreateMatch tr:last').clone().appendTo('#CreateMatch')
.find('input.Datetime')
.removeClass('hasDatepicker');
});
$('#AddAnother').bind('click', function(event) {
$('#CreateMatch tr:last').clone().appendTo('#CreateMatch')
.find('input.Datetime')
.removeClass('hasDatepicker');
});