3

这是我的 HTML::

<fieldset>
    <legend>Attributes</legend>

    <div class="attr_container">
        <div class="attr_entry existent row">
            <div class="half">
                <label for="attribute[]">Attribute</label>
                <input id="attribute" maxlength="50" required="required" name="attribute[]" type="text">                
                <p>
                    <a href="javascript:void(0)" class="add_attr"><i class="fa fa-plus-circle"></i> Add Another Attribute</a> 
                    <span class="remove">| 
                    <a href="javascript:void(0)" class="remove_attr"><i class="fa fa-minus-circle"></i> Remove</a></span>
                </p>
            </div>
            <div class="half">
                <label for="designator">Is this attribute a designator?</label>             <input checked="checked" name="designator[0]" type="radio" value="0" id="designator[0]"> No
                <input name="designator[0]" type="radio" value="1" id="designator[]"> Yes
            </div>
        </div>
    </div>

</fieldset>

这是我的 jQuery:

    $('.add_attr').click(function() {
        // clone and add
        $( ".attr_entry:first" ).clone(true).removeClass('existent').insertAfter( ".attr_entry:last" );
    });

    $('.remove_attr').click(function() {
        // remove entry
        if($(this).parents('.attr_entry').first().hasClass('existent')) {
            alert('You can not remove the first attribute entry.');
        } else {
            $(this).parents(".attr_entry").first().remove();
        }
    });

所以当我克隆它时,我想知道如何将 name 属性更改为designator[1].. 所以添加一个。我不确定如何在最后一个附加的克隆之后进行克隆和插入。

这是我引用的 HTML,用于确定如何接受单选按钮数组:

单选按钮 + 数组元素

因为我需要知道我可以在我的 PHP for 循环中执行的属性并获取属于它的正确指示符。

谢谢你的帮助!

4

2 回答 2

4

您可以通过评估存在多少$('.attr_entry')元素来获得新索引。然后,您可以组合find()prop()设置单选按钮的名称。

修改你的clone()行如下:

var newIndex = $('.attr_entry').length;
$('.attr_entry:first').clone(true).removeClass('existent').insertAfter('.attr_entry:last').find('input[type="radio"]').prop('name', 'designator['+newIndex+']');

jsFiddle 演示

还请注意,id元素的属性应该是唯一的,因此您可能需要考虑同时更新它(使用相同的prop()方法)。

于 2014-01-15T21:24:01.317 回答
2

对jquery中的clone不太熟悉,可以使用该attr()函数设置属性。

所以你的代码看起来像这样:

var designatorIndex = 0;
$('.add_attr').click(function() {
    // clone and add

    var myVar = $( ".attr_entry:first" ).clone(true).removeClass('existent');

    $(myVar).attr('name', 'designator' + designatorIndex );
    $(myVar).id('designator' + designatorIndex);
    designatorIndex++;
    $(myVar).insertAfter( ".attr_entry:last" );
});
于 2014-01-15T21:29:30.900 回答