使用表单外的按钮提交表单


Submit form with a button outside the form

我有一个表单,我使用表单外的按钮提交。以下是我如何使用表单外部的按钮提交表单的代码。下面的代码应该与页面上的某些内容相呼应。但我不知道为什么我的文字不会回响。

    <?php
    if(isset($_POST['partForm'])){
        echo "Test1";
    }
    if(isset($_POST['submitForm'])){
        echo "Test2";
    }
?>
<html>
<body>
<div>
<h2>Part</h2>
<form method="post" enctype="multipart/form-data" name="partForm" id="partForm" action="submit_form_button_outside.php">
SKU#: <input type="text" name="sku"><br>
Part: <select name="categories">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="fiat">Fiat</option>
<option value="audi">Audi</option>
</select><br>
Description: <input type="text" name="part"><br>
Quantity: <input type="text" name="part"><br>
Price: <input type="text" name="part"><br>
Select images: <input type="file" name="img" multiple><input type="submit" value="Upload">
</form>
</div>
<div>
    <button type="submit" form="partForm" value="submitForm">Add Item</button>
    <!--<button type="button" onclick="document.getElementById('partForm').submit();">Add Item</button>-->
    <!--<button type="button" onclick="document.forms['partForm'].submit(); return false">Add Item</button> -->
</div>
</body>
</html> 

你可以使用 jQuery submit 函数,如下所示:

$('#buttonId').click(function() {
    $('#partForm').submit();
});

基本上,当单击外部按钮时,将提交表单。

您的按钮位于表单标记之外。

如果您希望按钮位于表单标记之外,请考虑以下示例:

<form action="demo_form.php" method="get" id="form1">
First name: <input type="text" name="fname"><br>
Last name: <input type="text" name="lname"><br>
</form>
<button type="submit" form="form1" value="Submit">Submit</button>

请注意按钮上的窗体属性。

接下来要检查的是是否设置了发布的变量:

print_r($_POST);

POST 数组中的值将是已发布元素的名称。我不是 100% 确定,但我认为表单名称不会在 $_POST 数组中。

您可以使用以下命令检查帖子

if (!empty($_POST))
{
}

或者您可以根据表单中的输入名称检查单个值,例如 $_POST['sku']

你的代码运行良好,表单正在提交,但你在$_POST['partForm']中测试了一个错误的值,尝试填写值sku,,在你的php测试中$_POST['sku']

如果你在表单外面有一个按钮,如果不使用 javascript,你就无法使用该按钮提交表单。

我在下面看到的代码看起来确实正确: 添加项目

我认为这不起作用。您是否确认表单确实已提交?我认为表单名称并不总是在 $_POST 数组中传递。更好地测试其中一个元素,或者只是print_r($_POST);以显示提交的信息。