我有一个表单,允许用户自动添加字段块。由于各种原因,这些字段需要与其块中的其他字段相关联。我正在通过将每个块中的所有字段放在一个数组中来完成此操作,如下所示
<select name="items[0][item_type]" class="item_type">
<option value="0">Bulding / Landscaping</option>
<option value="1">Full / Thin Veneer</option>
</select>
<select class="select_custom" name="items[0][standard]">
<option value="0">Standard</option>
<option value="1">Custom</option>
</select>
这会让我回到像Array ( [0] => Array ( [item_type] => 0 [standard] => 1 ) )
那样的东西,这样我就能轻松处理后端的数据。
问题是必须指定数组索引才能使其正常工作。当我添加一个像上面那样的新字段时,我需要一种方法来改变所有items[][fieldname]
的索引。
下面是我用来将输入块附加到文档的代码。它们都包含在div中,因此我只是克隆该div并将其追加到最后一个div之后。
$('#more_fields').click(function(){
$('.field_group:first').clone(true).hide().insertAfter('.field_group:last').slideDown('slow');
var last = $('.field_group:last');
last.append(new_button.clone(true));
last.find('select').val([]);
last.find(".custom_products").css("display","none");
last.find(".unit_selection").css("display","none");
last.find(".landscape_selection").css("display","none");
last.find(".veneer_selection").css("display","none");
last.find(".comments_section").css("display","none");
last.find(".standard").css('display','none');
});
答案 0 :(得分:1)
您可以完全省略索引,它将在表单提交时自动处理:
<select name="item_type[]" class="item_type">
<option value="0">Bulding / Landscaping</option>
<option value="1">Full / Thin Veneer</option>
</select>
<select class="select_custom" name="item_standard[]">
<option value="0">Standard</option>
<option value="1">Custom</option>
</select>
为每个新组提供索引增量:
var current = $(".field_group").length - 1;
last.find('select.item_type')
.attr("name", "items[" + current + "][item_type]");
last.find('select.select_custom')
.attr("name", "items[" + current + "][standard]");