我使用以下代码通过简单地复制父 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 事件?),它的值应该自动保存在隐藏的输入字段中。
这应该发生在每个输入字段中。值应该用';'分隔 并且根据隐藏输入元素内的值的数量,它应该 - 在回发之后 - 使用上述 clone() 函数在 dom 中添加确切数量的输入字段,并重新填充这些值。
因为在每次回发之后(例如,如果没有填写所有必填字段)它不会自动添加(通过 jQuery)添加的输入字段,这当然是有道理的......
如果有更简单的方法可以做到这一点,我很想听听如何,否则我会很感激任何帮助,因为我一无所知,尤其是在价值观分离方面。
[编辑]
我忘了提到的是,我使用 c# .net 并且隐藏的输入字段使用runat="server"属性。
[编辑 2]
附加信息:我在网络表单中有这个。使用此表格,您可以在网站上保存“项目”(数据存储在数据库中)。这些项目/文章可以有多个(最多 6 个)作者,这就是 jQuery 出现的时候......用户最多可以添加 6 个作者,并且在页面加载后由用户动态添加到 dom ,它们不会在表单发送(回发)到服务器后自动添加。所以我需要存储这些输入字段的值,彼此分开,以便在回发后仍然有值,还要添加用户定义的作者输入字段数量。我希望这或多或少清楚我想做什么?
提前致谢!