我创建了一个for
循环,允许我为用户生成文本框,以输入要添加到mySql数据库的数据。
var $frm2 = $("<form id=insertform class=form2></form>"); // craete the form
$frm2.append(txt8, txt9); // add 2 clone dropdown boxes to the form
// this loop creates n number of text boxes abnd adds them to the form
for(var i = 0; i < n-1; i++) {
$('<input /></br>', {
id: "valueid" + i,
text: "text",
name: "user"
}).appendTo($frm2);
}
问题是,当我通过JSON将数据序列化为AJAX帖子时,只有两个下拉框被序列化,文本框似乎没有添加到数据中。
$("#inserthbtn").click(function() {
var datastring = $($frm2).serialize();
$("#reports4").append(datastring);
alert(datastring);
});
如果你能看到我出错的地方那将是惊人的(我也知道我错过了发布到AJAX的脚本,我无法将其作为故障查找过程的一部分而去除。)< / p>
答案 0 :(得分:0)
将输入数组样式名称以[]
结尾。当它被序列化时,它们将被收集到一个数组中。
for(var i = 0; i < n-1; i++)
{
$('<input />', {id: "valueid" + i,text: "text",name: "user[]"}).appendTo($frm2);
$('<br />').appendTo($frm2);
}
此外,当您将多个元素放入第一个参数时,不能使用$()
的object参数来指定新元素的属性。
另一个选择是为他们提供唯一的名称name: "user"+i
。
答案 1 :(得分:0)
问题是因为虽然您提供的对象具有要应用于动态创建的input
的属性,但您要创建两个元素(input
和br
)因此jQuery不确定要将属性放在哪个元素上。从选择器中删除br
元素,它将起作用:
for(var i = 0; i < n-1; i++) {
$('<input />', {
id: "valueid" + i,
text: "text",
name: "user"
}).appendTo($frm2);
}