使用php动态构建的表单,而不是提交

时间:2016-01-25 作者:Rich

在我的一个wordpress管理页面上,我正在构建一个表单来添加新的邮件。

我让它检查模板mysql表并构建可用模板的列表,然后还让它选择添加新模板。

由于某种原因,表单未提交。当我使用chrome的控制台时,我看到它说语法错误意外},但我在页面的HTML输出中没有看到}。

以下是构建表单的php:

    <form action="http://somedomain.com/new-mailer" method="GET" name="form1"><hidden name="action" value="createANewMailer"><hidden name="then" value="customize"><?php
        $results = $wpdb->get_results($wpdb->prepare("SELECT * FROM `mailerTemplateFiles` where `u` = \'1\'"));
        $_MenuItem = "<select name=\\"template\\" required=\\"1\\" size=\\"1\\" autofocus>";
        foreach ($results as $res) {
            $_optv = $res->mtid;
            $_optl = $res->layoutname;
            $_MenuItem .= "<option value=\\"$_optv\\">" . $_optl . "</option>\\n";
        }
        $_MenuItem .= "<option value=\\"addNew\\">Add New Template</option>";
        $_MenuItem .= "</select>";
        echo $_MenuItem;
    ?><input type="button" onclick="document.getElementById("form1").submit();" value="Continue"></form>
我试图通过单击按钮(没有onclick)让它自然提交,但它不起作用,所以我添加了onclick方式来提交它。这也行不通。

以下是它生成的HTML输出:

<form action="http://somedomain.com/new-mailer" method="GET" name="form1"><hidden name="action" value="createANewMailer"><hidden name="then" value="customize"><select name="template" required="1" size="1" autofocus><option value="addNew">Add New Template</option></select><input type="button" onclick="document.getElementById("form1").submit();" value="Continue"></form>
我不明白为什么它不起作用。

-丰富的

1 个回复
最合适的回答,由SO网友:Jeroen 整理而成

您的表单不包含ID。您需要替换name="form1" 具有id="form1".

这是因为你的javascript说,

onclick="document.getElementById("form1").submit();" 
返回False,因为没有ID为“form1”的表单。