我使用以下代码通过简单地复制父div来动态添加或删除jQuery的输入字段:
$(document).ready(function () {
$('#btnAdd').click(function () {
var num = $('.clonedInput').length; // how many "duplicatable" input fields we currently have
var newNum = new Number(num + 1); // the numeric ID of the new input field being added
// create the new element via clone(), and manipulate it's ID using newNum value
var newElem = $('#input' + num).clone().attr('id', 'input' + newNum);
// manipulate the name/id values of the input inside the new element
newElem.children(':first').attr('id', 'author' + newNum).attr('name', 'author' + newNum).attr('value', 'enter a name');
// insert the new element after the last "duplicatable" input field
$('#input' + num).after(newElem);
// enable the "remove" button
$('#btnDel').attr('disabled', '');
// business rule: you can only add 5 names
if (newNum == 5)
$('#btnAdd').attr('disabled', 'disabled');
});
$('#btnDel').click(function () {
var num = $('.clonedInput').length; // how many "duplicatable" input fields we currently have
$('#input' + num).remove(); // remove the last element
// enable the "add" button
$('#btnAdd').attr('disabled', '');
// if only one element remains, disable the "remove" button
if (num - 1 == 1)
$('#btnDel').attr('disabled', 'disabled');
});
$('#btnDel').attr('disabled', 'disabled');
});
现在基本上我想要做的是,只要填写了最多六个输入字段之一(onchange event?),它的值就会自动保存在隐藏的输入字段中。
每个输入字段都会发生这种情况。价值观应该用';'分隔并且根据隐藏输入元素中的值的数量,它应该 - 在回发之后 - 使用上面的clone()函数在dom中添加确切数量的输入字段,并将值重新填入。
因为在每次回发之后(例如,如果没有填写所有必填字段),它不会自动添加(通过jQuery)添加的输入字段,这当然是有道理的....
如果有一种更简单的方法可以做到这一点,我很乐意听到如何,否则我会感激任何帮助,因为我无能为力,尤其是在分离价值观时。
[编辑]
我忘了提到的是,我使用c#.net,隐藏的输入字段使用 runat =“server”属性。
[编辑2]
其他信息:我在网络表单中有这个。使用此表单,您可以在网站上保存“项目”(数据存储在数据库中)。这些项目/文章可以有多个(最多6个)作者,这就是jQuery进来的时候......用户最多可以添加6个作者,并且在页面加载后由用户动态添加到dom中,在将表单发送(回发)到服务器后,它们不会自动添加。所以我需要存储这些输入字段的值,彼此分开以便在回发后仍然具有值,而且还要添加用户定义的作者输入字段数量。我希望这或多或少地清楚我想要做什么?
提前致谢!