我正在尝试将日期选择器控件应用于克隆的输入字段。我正在做的是找到我想要克隆的表行,使用 clone(false)
克隆它,然后为每个输入使用类 .date
调用 datepicker()
他们。代码如下:
$('.repeat').bind('click', function() {
var parentEl = $(this).parents('.root');
var lastRow = jQuery.makeArray($(parentEl).find('.last'));
var newRow = $(lastRow).clone(false);
$(lastRow).removeClass('last');
$(newRow).addClass('last');
newRow.find('input').each(function() {
this.name = this.name.replace(/\[(\d+)\]/, function(str, p1) {
return '[' + (parseInt(p1, 10) + 1) + ']';
});
}).end().insertAfter($(lastRow));
newRow.find('.date').each(function() {
$(this).removeAttr('id');
$('.date').datepicker({ dateFormat: 'dd-mm-yy', changeYear: true, yearRange: '1970:2010' });
});
});
现在 $(this).datepicker()
和 $('.date').datepicker()
都无法将 datepicker 控件附加到 input .日期
.
除了日期选择器位之外,上面的代码按预期工作。
大家有什么想法吗?!
最佳答案
如果您先添加行(在应用日期选择器之前)并删除由日期选择器 .hasDatepicker
添加的类,似乎可以工作。
$('.repeat').bind('click', function(){
var parentEl = $(this).parents('.root');
var lastRow = jQuery.makeArray($(parentEl).find('.last'));
var newRow = $(lastRow).clone(false, false);
$(lastRow).removeClass('last');
$(newRow).addClass('last');
$('.root').append(newRow); // added this
newRow.find('.date').each(function() {
$(this).removeAttr('id').removeClass('hasDatepicker'); // added the removeClass part.
$('.date').datepicker({dateFormat: 'dd-mm-yy', changeYear: true, yearRange: '1970:2010'});
});
});
关于克隆元素上的 jQuery 日期选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5788999/