jquery更新<输入名称=[i]>如果DOM被改变
jquery update <input name = [i]> if DOM is changed
我是jQuery的新手,如果你能帮我解决一个问题,我将不胜感激。
当用户单击链接时,我生成了一个表单/元素列表(来自数据库)。每个元素都有一个用jQuery生成的移除按钮。如果单击该按钮,该按钮将删除它本身和输入文本框。我还有一个添加新的文本框按钮。此按钮将创建一个新的文本框和删除按钮。
我所有的文本框都有一个名称[i]-value;
name[1]
name[2]
name[3]
...
...
问题是,当我删除一个文本框时,值就被删除了(就像i-)。旧值不会更新。在我的帖子中,我只从"有序"的文本框中获得值,即如果像一样跳过了文本框值
name[1] name[2] name[4] name[5] ...
它不会被退回。(在这种情况下,我将只返回值name1和[2])。
我需要帮助如何构建数组并将所有值存储到数组中。然后更新数组中的所有值。
这是我的javascript代码:
$(函数(){var scntDiv=$('#TextBoxesGroup');
var i = $('#TextBoxesGroup p').size(); $('#addButton').live('click', function () {
- //线路制动器,使其可读性更强
$('<p> <label for="Students_' + i + '__Name">Name: </label> <input type="text" class="text-box single-line" id="Students_' + i + '__Name" size="20" name="Students[' + i + '].Name" placeholder="Student name..." /> <button id="remove">Remove</button> </p>').appendTo(scntDiv); i++; return false; }); $('#remove').live('click', function () { if (i >= 0) { $(this).parents('p').remove(); i--; var array = $('#TextBoxesGroup p') alert(array.length); } return false; }); });
这是小提琴:
- http://jsfiddle.net/6vmMy/1/
我建议您看看following article
,它说明了通过使用默认模型绑定器支持的非顺序索引来实现目标的更好选择。这样,在删除元素时,您就不会在索引中留下漏洞,这将使代码变得更容易。此外,本文作者还提供了一个名为Html.BeginCollectionItem
的自定义HTML助手,它允许您隐藏生成正确标记所需的所有管道。
备注:.live()
已在jQuery 1.9中删除。您应该使用.on()
方法。
我感觉你希望至少有一个学生,所以我会在标记中放一个:
<div id="container">
<div id="TextBoxesGroup"> <span>
Press to add textbox and remove button
</span>
</div>
<p class="students">
<label>Name:
<input type="text" class="text-box single-line" size="20" placeholder="Student name..."
/>
</label>
<button class="removeStudent">Remove</button>
</p>
<input type='button' value="Add more Students" id="addButton" />
</div>
然后,我会简单地操作它来添加更多:(详细显示步骤等,可以合并一点)
$(function () {
var scntDiv = $('#TextBoxesGroup');
$('#addButton').click(function () {
var lastStudent= $(".students").last();
var newName = lastStudent.clone();
newName.find('.single-line.text-box').val("new student");
lastStudent.after(newName);
});
$('#container').on('click', '.removeStudent', function () {
if ($('.students').length > 1) {
$(this).parents('p').remove();
}
});
});
这会克隆最后一个,将其插入最后一个之后,并始终保留至少一个学生,并允许删除其中的任何一个。否则,我会研究Darin提供的答案。
- 如何将分钟格式化为小时和分钟,但仅显示小时(如果's>60分钟
- 检查页面范围并提取<h1>内容(如果使用JQuery存在页面)
- 如果检查了输入,则将类应用于<身体>,没有jQuery
- 我怎么能做这样的事情;如果(a>x>b)“;
- 如何使用“;ng如果“;在Html<a>标签
- 将类添加到<身体>如果在“;“有能力”;iOS 7上的网络应用程序
- 在<c: 如果>陈述
- javascript页面加载检查是否存在具有特定类的span(在<tr>下),如果不存在,则删除整个<
- 使第二<选择>如果首先<选择>设置为某个选项
- 如果(window.innerWidth>800),则打开左侧和右侧面板
- <tspan>文本</tspan>如果没有定义id或类,如何删除文本
- 隐藏<页眉>如果在iFrame中
- 如果所有三个文本框<>然后是100%
- JSTL<c: 如果测试>不包含
- 如果两个<img>彼此接触
- 从<选择>如果选择的选项包含ID='答案'在HTML/JavaScript(JQuery)中
- 如果当前日期>今天不能使用Javascript
- <音频>.如果内容加载过快,addEventListener进程将无法启动
- 尝试显示<tr>如果选择了一个选项
- 替换<a>如果它以字符串JQuery结尾