创建重复表单部分,删除字段值

时间:2014-08-18 23:03:55

标签: javascript jquery forms repeat

我有一个带有重复部分的表格。要创建重复部分,我使用的是此代码的略微变体:

// 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("");

但我不确定如何将其纳入我已有的功能中。那么在创建新表单部分后,如何清除字段的值?

1 个答案:

答案 0 :(得分:2)

您可以删除新克隆的所有输入字段中的所有值:

cloned.find("input").val("");

jsfiddle

编辑:

要重置广播组,您可以将其选中的值设置为false:

cloned.find("input:radio").attr("checked", false);

Updated jsfiddle