我有以下 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/

10-12 12:38
查看更多