重置名称属性数组索引,动态添加删除行

时间:2018-08-20 12:47:50

标签: javascript html

我必须通过ajax发布数据,并且需要name属性数组索引才能重置。

例如:

第一行:

<select data-placeholder="Colours" class="colours chosen-select" 
multiple tabindex="4" name="colours[0][]">
<option value="">Red</option>
<option value="">Orange</option>
</select>

第二行动态添加:

<select data-placeholder="Colours" class="colours chosen-select" 
multiple tabindex="4" name="colours[1][]">
<option value="">Red</option>
<option value="">Orange</option>
</select>

每次添加时,名称颜色数组必须增加1,并在删除时重置值。

我环顾四周,但没有找到解决方案。

这是我所拥有的:

添加:

var tbl = $("#service");
$("#addRowBtn").click(function () {
var count = $('#rowCount tr').length;   

$("<tr>" +    
"<td>" +
"<select data-placeholder=\"Colours\" class=\"colours chosen-select\" 
multiple tabindex=\"4\"\ name=\"colours[" +
count +
"][]\">" +
"<option value=\"\">Red</option>" +
"<option value=\"\">Orange</option>" +
"</select></td>" +
"<td><i style=\"color:#d64830\" class=\"delRowBtn fa fa-minus- 
circle\"></i></td></tr>").appendTo(tbl);

删除行:

$(document.body).delegate(".delRowBtn", "click", function () {

  $(this).closest("tr").remove();
 });

我添加了var count以增加索引,但是删除时无法重置值。

请帮助!

1 个答案:

答案 0 :(得分:0)

每次删除项目时,您都可以尝试循环使用表的所有选择并更改每个选择的属性“名称”。

$('#rowCount tr td select').each(function(idx, item){
 $(item).attr("name", "colours[" + idx + "][]")
});

更新

喜欢建议@ChayimFriedman先前建议的酷版本

$('#rowCount select').attr('name', function(idx) { return "colours[" + idx + "][]"; });