1

我有一个表单,允许用户自动向其中添加字段块。由于各种原因,这些字段需要与其块中的其他字段相关联。我通过将每个块中的所有字段放入数组中来完成此操作,如下所示

<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 并将其附加到最后一个之后。

$('#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');
    });
4

1 回答 1

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]");
于 2013-07-07T19:06:23.197 回答