我有以下 HTML 块,用于作为表单的一部分从用户那里收集有关项目的信息:
<div class="clone_block">
Name: <input type="text" name="items[0][name]" /><br />
Amount: <input type="text" name="items[0][amount]" /><br />
<button class="delete">Delete</button>
</div>
我可以克隆这个元素(如果用户想要添加另一个项目)并将它放在 DOM 中
div.clone_block
的最后一个实例之后,一切正常,我也可以删除元素。但是,我最终得到了多个具有相同名称的文本输入实例,这意味着只有最后一个出现在 POST 请求中(前一个被覆盖)。我想要做的是重新编号所有项目,以便第一个是 item[0]
,第二个是 item[1]
等。有没有办法在 jQuery 中做到这一点?以这种方式创建名称可以更轻松地使用 PHP 处理 POST 数据,因此如果可能,我不想更改命名方案。
最佳答案
您可以在每次克隆/删除后实现类似的操作来重命名元素:
function renumber_blocks() {
$(".clone_block").each(function(index) {
var prefix = "items[" + index + "]";
$(this).find("input").each(function() {
this.name = this.name.replace(/items\[\d+\]/, prefix);
});
});
}
演示:http://jsfiddle.net/Wzzf2/1/
关于jquery - 使用 jQuery 重新编号文本输入数组索引,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12370317/