动态添加的表单字段未显示在POSTed数据中

时间:2012-04-05 15:17:58

标签: php javascript jquery

我正在使用jQuery添加表单元素。它显示在页面上,具有正确的值,但是当我提交表单时,数据不会显示在PHP后端。我查看了Firebug的POST数据,我也没有看到它。我用来添加表单元素的javascript是:

$("#projectArray").append("<input type='text' name='data[Project][description]' value='"+projectDescription+"' id='test' />");

有没有人遇到这样的事情?我似乎是其他帖子,但它们似乎是拼写错误,据我所知,我没有任何拼写错误。

修改:根据要求,这是表单代码。我削减了很多,因为它是一个非常大的形式。如果有人想要完整的代码,我可以粘贴它。

<form action="/learningexperiences/add" id="LearningexperienceAddForm" method="post" accept-charset="utf-8">
    <div style="display:none;"><input type="hidden" name="_method" value="POST"/></div>
    <div class="input text"><tr><td><label for="LearningexperienceSubjectarea">Subject Area</label>&nbsp;&nbsp;</td><td><input name="data[Learningexperience][subjectarea]" maxlength="50" type="text" id="LearningexperienceSubjectarea"/></td></tr>
...
    <tr><td>Active</td><td><div class="cbx"><input type="hidden" name="data[Learningexperience][active]" id="LearningexperienceActive_" value="0"/><input type="checkbox" name="data[Learningexperience][active]"  checked="checked" value="1" id="LearningexperienceActive"/></div></td></tr>

    <tr><td colspan="2" style="vertical-align:middle;"><div id="projectArray"></div></td></tr>

...
    <input type="hidden" name="data[Learningexperience][id]" id="LearningexperienceId"/><tr><td colspan="2" style="vertical-align:middle;">&nbsp;</td></tr>

</table>

<table id="buttonsTable">
<tr><td style="text-align:right;"><div style="margin-right:5px;"><div class="submit"><input  name="cancel" type="submit" value="Cancel"/></div></div></td>
<td><div class="submit"><input  type="submit" value="Save Record"/></div></form></td></tr>
</table>

编辑2:我将append标记更改为附加到表单元素(#LearningexperienceAddForm)。我不知道为什么,但它开始在那时工作。

5 个答案:

答案 0 :(得分:3)

遇到同样的问题时遇到了这个问题。我很确定你需要你的标签放在一切的外面。

类似的东西:

<form>
<table>

[add as many dynamic fields as you want]

</table>
</form>

由于高于我的薪资等级的原因,如果这些标签出现故障,则不会为POSTing选择动态字段...

希望这能让我节省2个小时的费用: - )

答案 1 :(得分:2)

我不打算附加HTML本身,而是建议创建元素,然后附加它:

var input = document.createElement('input');
input.name = 'data[Project][description]';
input.type = 'text';
input.value = projectDescription;
input.id = 'test';
$('#projectArray').append(input);

这样可以更好地将其插入DOM进行访问。

请告诉我这是否适合您。

答案 2 :(得分:2)

我将append标签更改为附加到表单元素(#LearningexperienceAddForm)。我不知道为什么,但它开始在那时工作。

答案 3 :(得分:0)

对于遇到此问题的任何人,只需确保您的结束表单标记包含附加数据。我的表格中有一个太多的关闭div,Google Chrome将其替换为结束标记,所以请注意这一点。

答案 4 :(得分:0)

请检查所有html元素标签 我的意思是在表单之间打开(&lt; ...&gt;)和关闭tag()。 所有人都应该以有管理的方式。