使用jQuery添加的表单元素不会在POST上发送

时间:2010-07-20 20:21:59

标签: javascript jquery forms zend-form

我有一个zend_form,我允许用户动态添加表单元素。 使用jQuery动态添加元素:类似......

$(function(){
  $('#more_answers').click(function(){
    var elemNum = $('.dummy-element').size();

    $("<dd class='dummy-element' id='dummyanswer_"+elemNum+"-element'><input type='text' value='' id='dummyanswer_"+elemNum+"' name='dummyanswer_"+elemNum+"'></dd>").insertBefore('#more_answers-element');

    return false;
  });
});

在标签内正确添加元素。 提交时,添加的元素未提交。 我在firebug中的Net视图中检查过,变量确实没有通过。

问题是什么? 它与zend_form有什么关系吗?我在过去使用原始JavaScript向Zend_Forms添加了元素,它工作得很好。

有什么想法吗?

谢谢,我真的很感激!

根据要求为表单元素添加更多标记:

<dd class="dummy-element" id="dummyanswer_2-element">
  <input type="text" value="" id="dummyanswer_2" name="dummyanswer_2">
</dd> <!-- this element was NOT added using jquery -->
<dd id="dummyanswer_3-element" class="dummy-element">
  <input type="text" name="dummyanswer_3" id="dummyanswer_3" value="">
</dd> <!-- this element was added using jquery -->
<dd id="more_answers-element">
  <input width="170px" height="30px" type="image" style="" class="addDummyAnswer" src="/images/add_more_dummy_answers_button_370X60px.png" id="more_answers" name="more_answers">
</dd>

3 个答案:

答案 0 :(得分:4)

我曾遇到过类似的问题。如果表单位于表格内,则添加的元素(输入)将是表格单元格的子元素,而不是表单的子元素,并且不会作为表单字段之一“链接”到表单,即使表标签位于表单标签内。

如果直接将输入字段添加为表单DOM节点的子节点,则它将作为其中一个字段“链接”到表单,并且应该正常提交。

最大的问题是,当一个元素作为非形式节点的子元素动态添加到DOM时,可以以某种方式将添加的输入元素“链接”到表单吗?我无法找到解决方案。

我在使用Firefox扩展时遇到此问题,因此在Firefox上观察到此行为。不确定其他浏览器如何处理这种情况。也许你正在经历类似的事情。

答案 1 :(得分:0)

好的解决了 - 我正在查看firefox中的源代码,事情确实正确呈现。 但是,我在Web开发人员中打开了同样的东西,并隐藏了表单标记。 它看起来像这样:

             <dl class = "zend_form">
                    <!---- all the elements -->
             </dl>
          <table>
               <form....></form> <!-- everything hidden -->   
         </table>

我删除了表格标签并且格式正常。 在这种情况下,我相信这是因为我没有&lt; tr>在表标签内,所以&lt; dl&gt;在表格外部呈现,表格在表格中呈现。 但是,这仍然引出了一个问题 - 为什么它会在“查看源代码”中正确显示?

答案 2 :(得分:0)

我在搜索StackOverflow时遇到类似情况,这可能是很久以前编码的。所以问题可能是因为格式错误的HTML,有人把&lt; form&gt;标签与&lt; table&gt;标签,我无法动态添加DOM元素。一旦我扭转它,它似乎工作正常。所以在这里加我2美分。