我有一个带有重复部分的表格。要创建重复部分,我使用的是此代码的略微变体:
// Add a new repeating section
var attrs = ['for', 'id', 'name'];
function resetAttributeNames(section) {
var tags = section.find('input, label'), idx = section.index();
tags.each(function() {
var $this = $(this);
$.each(attrs, function(i, attr) {
var attr_val = $this.attr(attr);
if (attr_val) {
$this.attr(attr, attr_val.replace(/_\d+$/, '_'+(idx + 1)))
}
})
})
}
$('.addFight').click(function(e){
e.preventDefault();
var lastRepeatingGroup = $('.repeatingSection').last();
var cloned = lastRepeatingGroup.clone(true)
cloned.insertAfter(lastRepeatingGroup);
resetAttributeNames(cloned)
});
// Delete a repeating section
$('.deleteFight').click(function(e){
e.preventDefault();
var current_fight = $(this).parent('div');
var other_fights = current_fight.siblings('.repeatingSection');
if (other_fights.length === 0) {
alert("You should atleast have one fight");
return;
}
current_fight.slideUp('slow', function() {
current_fight.remove();
// reset fight indexes
other_fights.each(function() {
resetAttributeNames($(this));
})
})
});
JSFiddle of it - http://jsfiddle.net/Unfxn/27/
我最初从这个帖子中找到了代码: Repeating div with form fields
但是,此代码存在问题:如果您填写表单字段,然后单击"添加战斗,"新的重复部分不仅复制了表单字段,还复制了它们的值。我想我需要使用这样的东西来清除新表单部分的值:
$(this).closest('form').find("input[type=text], textarea").val("");
但我不确定如何将其纳入我已有的功能中。那么在创建新表单部分后,如何清除字段的值?
答案 0 :(得分:2)
您可以删除新克隆的所有输入字段中的所有值:
cloned.find("input").val("");
编辑:
要重置广播组,您可以将其选中的值设置为false:
cloned.find("input:radio").attr("checked", false);