3

我正在使用 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:我将附加标签更改为附加到表单元素(#LearningexperienceAddForm)。我不知道为什么,但它从那个时候开始工作。

4

6 回答 6

4

在遇到同样的麻烦时遇到了这个问题。我很确定您需要将标签放在所有东西的外面。

像这样的东西:

<form>
<table>

[add as many dynamic fields as you want]

</table>
</form>

由于远高于我的工资等级的原因,如果这些标签有问题,则不会选择动态字段进行发布...

希望这可以为我节省 2 个小时的时间 :-)

于 2013-04-19T21:02:51.997 回答
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 以进行访问。

让我知道这是否适合您。

于 2012-04-05T15:51:48.240 回答
2

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

于 2012-04-06T13:42:43.883 回答
1

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

于 2015-09-17T23:28:57.710 回答
1

请检查所有 html 元素标签,我的意思是在表单之间打开(<...>)和关闭标签()。一切都应该以管理的方式进行。

于 2015-10-05T07:41:30.723 回答
0

我在从打算作为“模板”的内容中克隆一些输入字段以复制由其他人编写的字段集时发现,这些输入没有出现在我的表单数据中。经过一番摸索,结果发现输入字段上有disabled属性,一旦从我的克隆副本中删除,就会正确地包含在表单提交中。

我猜其他开发人员这样做是因为他们不希望模板与表单数据一起提交,因为它出现在表单标签中。

于 2021-08-27T21:16:09.987 回答