代码之家  ›  专栏  ›  技术社区  ›  Travis Leleu

使用javascript动态添加表单元素-不提交

  •  6
  • Travis Leleu  · 技术社区  · 16 年前

    编辑:我通过从头开始解决了这个问题。很抱歉浪费你们的时间。如果您有此想法,请投票关闭。

    当通过javascript添加输入字段时,我很难获取表单中要提交的实际数据。字段显示在正确的位置,但是当我在服务器端执行var_转储(fieldname)时,什么都没有显示。使用Live HTTP头进行检查告诉我浏览器没有尝试提交动态添加的表单字段。

    我的代码:

    <form id="att_form" method="post" name="add_attachments" enctype="multipart/form-data" action="#">
    <-- below input to prove form submits, just not the dyn added elements -->
    <input name="data[one]" type="text" />
    <div id="add_fields"></div>
    <input type="submit" />
    </form>
    

    Javascript

    function addFormField()
    {
     var id = 1;
     var htm = "<p id='row" + id + "'><input type='text' size='20' name='txt[]' id='txt" + id + "' /></p>";
     $("#add_fields".append( htm );
    }
    

    当我提交表单时,名为data[one]的输入将显示为POSTd值,但使用addFormField()添加的则不会显示。它们以HTML格式显示在正确的位置,但不会发布。我是否需要将该元素作为子元素附加到表单元素以使其提交?

    我见过 Submit form input fields added with javascript 这就是我想把数据专门附加到表单子级的原因,但这需要对CSS进行一些重构。所以,我希望我能在上面的代码中做一些简单的事情。

    提前谢谢!

    4 回复  |  直到 9 年前
        1
  •  2
  •   Olivvv    16 年前

    您的代码中有两个输入错误: htm而不是html

        2
  •  1
  •   MagikWorx    16 年前

    你的代码中有很多拼写错误。例如,您没有关闭jquery的选择器标记。

    你把 $("#add_fields".append( htm );

    $("#add_fields").append( htm );

    但我相信您的问题主要在于如何通过PHP访问这些值。我只是将您的源代码放在一个测试页面中,如果您正确地访问了这些值,那么一切都会正常工作。

    <?php
    foreach ($_REQUEST['txt'] as $printme) 
        echo $printme."<br/>";
    ?>
    

    上面的源代码运行良好。

        3
  •  1
  •   Asif Khan    12 年前

    当您添加/追加或使用 innerHtml 若要将表单字段放置为html,有时它会将其放置在表单外部,您会将其视为表单的一部分,但在内部它不是。

    要解决此问题,您需要添加 form 具有类似输入字段的属性 form=myForm ,myForm应该是您的表单id。

        4
  •  0
  •   amitkaz    16 年前

    这是你的真实代码吗?

    如果是,您没有关闭输入标记和p标记。。所以也许表单忽略了它们。。

    var htm = "<p id='row" + id + "'><input type='text' size='20' name='txt[]' id='txt" + id + "' /></p>";