带有动态文本框的序列化表单

时间:2016-01-26 21:54:28

标签: javascript jquery mysql json ajax

我创建了一个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);
});

enter image description here

如果你能看到我出错的地方那将是惊人的(我也知道我错过了发布到AJAX的脚本,我无法将其作为故障查找过程的一部分而去除。)< / p>

2 个答案:

答案 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的属性,但您要创建两个元素(inputbr)因此jQuery不确定要将属性放在哪个元素上。从选择器中删除br元素,它将起作用:

for(var i = 0; i < n-1; i++)  { 
    $('<input />', {
        id: "valueid" + i,
        text: "text",
        name: "user"
    }).appendTo($frm2);
}