php
  • javascript
  • jquery
  • 2012-04-05 120 views 1 likes 
    1

    我正在使用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)。我不知道为什么,但它开始工作在那个时候。

    +1

    你可以发表你的表格代码吗? – Bot 2012-04-05 15:20:09

    +2

    您是否100%肯定'#projectArray'位于'

    '标签内? – DaveRandom 2012-04-05 15:21:36

    +0

    已更新,其中包含表格代码的精简版。 #表单标签之间存在#projectArray。虽然好想。表单代码是通过CakePHP生成的,如果有任何区别的话。 – 2012-04-05 17:15:27

    回答

    2

    我改变了我的追加标签追加到表单元素(#LearningexperienceAddForm)。我不知道为什么,但它开始工作在那个时候。

    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访问一个更好的工作。

    让我知道这是否适合你。

    +0

    尽管我同意这是创建元素的更好方法,但最终结果是相同的,创建元素的方法的差异不能成为它在后数据中不显示的原因。我倾向于同意@DaveRandom--它很可能不会附加“form”标签。 – 2012-04-05 15:54:05

    +0

    与问题无关。大体上是这样,但并非总是如此。 – 2012-04-05 15:59:02

    +0

    需要采取的措施。或者说,采取负面的观点。 – 2012-04-05 16:07:25

    3

    在遇到同样的问题时碰到了这个。我很确定你需要你的标签在任何事物的外面。

    是这样的:

    <form> 
    <table> 
    
    [add as many dynamic fields as you want] 
    
    </table> 
    </form> 
    

    对于那些我上面的薪酬等级的方式,如果这些标记是无序的动态字段没有拿起过帐的原因...

    希望这保存某人2小时花费我:-)

    +0

    我有同样的问题。我确实修复了html,之后它开始正常工作 – Vyacheslav 2015-01-02 11:32:35

    0

    对于任何有此问题的人,只要确保您的结束窗体标签包含附加数据。 Google Chrome取代了我的表格中的一个结尾div,因此请注意这一点。

    0

    请检查所有html元素标记 我的意思是打开(< ...>)并关闭表单之间的标记()。 所有应该以管理的方式。

    相关问题