【发布时间】:2014-10-08 16:27:08
【问题描述】:
继我之前的question
我现在有一个表单,当单击添加时,它会向表单添加一个新的输入字段,每次将字段名称和输入文本递增一个。例如:phone_number1、phone_number2 等
我使用的 jquery 是:
$(document).ready(function(){
var phone_number_form_index=1;
$("#add_phone_number").click(function(){
phone_number_form_index++;
$(this).parent().before($("#phone_number_form").clone().attr("id","phone_number_form" + phone_number_form_index));
$("#phone_number_form" + phone_number_form_index).css("display","inline");
$("#phone_number_form" + phone_number_form_index + " :input").each(function(){
$(this).parent().find('span').text('Phone number ' + phone_number_form_index);
$(this).attr("name",$(this).attr("name") + phone_number_form_index);
$(this).attr("id",$(this).attr("id") + phone_number_form_index);
});
$("#remove_phone_number" + phone_number_form_index).click(function(){
$(this).closest("div").remove();
});
});
});
这个 JFiddle 展示了表单的工作情况,当添加新行时,字段名称会随着输入文本的增加而增加。 http://jsfiddle.net/yezw6c51/25/
但是,如果我删除一个字段,编号可能会变得混乱。
例如:
对于一个字段,输入文本和字段名称是电话号码 1 / 电话号码1
有两个字段,输入文本和字段名称是电话号码 1 和 电话号码 2 等
对于三个字段,输入文本和字段名称是电话号码 1 和 电话号码 2 和电话号码 3 等
如果我随后使用删除按钮删除电话号码 2,我最终会得到 1 和 3,点击添加从 4 开始。
如果我删除 2 而不是 1 和 3 有什么办法,我会得到 1、2 并且下一个添加是 3 吗?
这需要更新所有正在更新的字段名称和输入文本条目。
【问题讨论】:
-
我不会承担所有这些开销。处理起来似乎有点多(你能想象如果你有 10 多个数字吗?)。为什么要重新计算所有索引?
-
服务器端有什么理由不使用
phone_number[]? -
你可以这样做,但你会经常遇到这样的问题。您需要做的是将您的 data 与您的 display 逻辑分开。看看 Addy Osmani 的学习 JavaScript 设计模式的这一部分来理解这个概念:addyosmani.com/resources/essentialjsdesignpatterns/book/…
-
@Mooseman - 我可能会使用服务器端,但我想看看如何返回输出。我今天会做一些测试,所以一旦我知道返回什么信息以及以什么格式返回。
标签: javascript jquery