在单个表单中使用2个提交按钮

using 2 submit buttons in a single form

本文关键字:2个 提交 按钮 单个 表单      更新时间:2023-09-26

我有一个允许用户提交值的表单,它运行得很好,但现在我在b/w中引入了另一个按钮,即表单"另存为草稿"。

<form class="form-horizontal" role="form" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST">
    <input name="title">
    <input name="tag1">    
    <textarea name="details"></textarea>
    <button name="draft" type="submit1" class="btn btn-default">Save as Draft</button>
    <input name="location" required>
    /*
    *
    few more i/p values
    *
    */
<button name="save" type="submit" value="submit" >Save</button>
</form>

我想做的是将title、tag1和details的值保存在数据库中,而不保存保存为draft按钮下的值。为此,我使用了以下代码

if ($_POST['draft'])
    {
        //exectue the required code
    }
elseif($_POST['save'])
    {
        //exectue the required code
    }

现在的问题是,如果我点击"保存为草稿",它仍然会检查该按钮下面的编码(在这个例子中,我已经指定了必要的位置),而要求是,如果用户点击"保存作为草稿",那么这些值应该被保存,并且不需要填充它下面的其他值,但如果点击了提交按钮,那么就需要填充所有值。有人能告诉我怎么做吗

您只能使用javascript执行此操作。您需要在"保存草稿"按钮上放置一个onclick处理程序,该处理程序可以从提交时不需要的任何字段中删除所需的属性。或者,您可以从所有字段中删除必需的属性,并使用自定义javascript处理表单验证。

<form class="form-horizontal" role="form" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST">
    <input name="title">
    <input name="tag1">    
    <textarea name="details"></textarea>
    <button name="draft" id="draft" type="submit1" class="btn btn-default">Save as Draft</button>
    <input name="location" required>
    /*
    *
    few more i/p values
    *
    */
<button name="save" id="save" type="submit" value="submit" >Save</button>
</form>
<script>
    $( "#save" ).submit(function( event ) {
      alert( "I'm Save" );
    });
    $( "#draft" ).submit(function( event ) {
      alert( "I'm Draft" );
      event.preventDefault();
    });
</script>

您可以使用javascript来完成此操作
请尝试此代码:

<form class="form-horizontal" role="form" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST">
    <input name="title" id="title">
    <input name="tag1" id-"tag1">    
    <textarea name="details" id="details"></textarea>
    <button name="draft" id="draft" class="btn btn-default" onclick="update_draft()">Save as Draft</button>
    <input name="location" required>
    /*
    *
    few more i/p values
    *
    */
<button name="save" type="submit" value="submit" >Save</button>
</form>

JS:

<script>
function update_draft(){
            if($("#title").val() === "")
            {
              alert("empty title");
            }
            else if($("#tag1").val()==="")
            {
              alert("empty tag");
            }
            else if($("#details").val()==="")
            {
              alert("empty details");
            }
            else
            {
                   $.post('<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>', {draft:true,title: $("#title").val(), tag1: $("#tag1").val(),details: $("#details").val() }, function(data, status){
                });
            }
}
</script>

服务器端::

if($_POST["draft"]){
}
elseif($_POST["save"]){
}

对我来说,echo var_dump($_POST['draft']);产生输出string(0) "",这表明$_POST['draft']是一个空字符串。换句话说,该值为false,并且代码的其余部分不会被执行。

您需要使用isset来检查密钥是否存在。我能够使用以下简化代码读取按下的按钮:

<html>
<body>
<?php
if (isset($_POST['draft'])) {
    echo 'Draft was saved';
} else if (isset($_POST['submit'])) {
    echo 'Form was submitted';
}
echo '<pre>';
print_r($_POST);
echo '</pre>';
?>
<form method='post'>
<input name='draft' type='submit' value='Save Draft'>
<input name='submit' type='submit' value='Submit'>
</form>
</body>
</html>

下面的代码,包括你发布的代码,对我也有效:

<html>
<body>
<?php
if (isset($_POST['draft'])) {
    echo "Draft was made";
} else if(isset($_POST['save'])) {
    echo "Form was saved";
}
?>
<form class="form-horizontal" role="form" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST">
    <input name="title">
    <input name="tag1">
    <textarea name="details"></textarea>
    <button name="draft" type="submit1" class="btn btn-default">Save as Draft</button>
    <input name="location" required>
    /*
    *
    few more i/p values
    *
    */
<button name="save" type="submit" value="submit" >Save</button>
</form>
</body>
</html>