我在頁面上有多個自動生成的表單。它們以特定的方式等被命名爲:用jquery重命名特定範圍內的元素
形式-0-重量,形式-1-重量,形式-2-重量等
<ul>
<li>
<input id="id_form-0-weight" type="text" name="form-0-weight">
<a class="deleteIngredient" href="">x</a>
</li>
<li>
....more forms
</li>
</ul>
用戶可以添加和刪除的形式。如果表單被刪除,其餘的應該重新命名以保持順序。例如「form-1-weight」被刪除>>「form-2-weight」將被重命名爲「form-1-weight」。 表單的總數存儲在名爲TOTAL_FORMS的隱藏字段中。
我試圖用一個簡單的循環實現這一點。 問題是,刪除後的所有表單都會得到相同的名稱。 例如如果我刪除形式-2的重量,下面所有的形式獲取名稱形式-2的重量,而不是2,3,4等
$(".deleteIngredient").click(function(e){
e.preventDefault();
var delete = $(this).closest('li');
name = delete.children('input').attr("name");
count = name.replace(prefix,'');
count = name.replace("-weight",'');
var formCount = parseInt($("#TOTAL_FORMS").val())-1;
delete.remove();
for (var i = parseInt(count); i<=formCount; i++){
var newName = "form-"+i+"-weight";
$("#id_form-"+(i+1)+"-weight").attr("name",newName);
}
});
我想它是與我如何選擇元素在循環內部,因爲當我只使用變量「我」而不是「newName」時,它按預期工作。