在单个表单中使用2个提交按钮
using 2 submit buttons in a single form
我有一个允许用户提交值的表单,它运行得很好,但现在我在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>
相关文章:
- 如何在Razor MVC 5.2.3 Ajax中使用多个提交按钮
- 为表单发送多个页眉或多个提交
- 两个提交按钮,但第一个返回空
- 单击1个表单中的2个提交按钮中的1个时,如何运行脚本
- 两个提交按钮(一个隐藏,一个可见)
- 具有两个提交按钮和两个不同操作的 HTML 表单
- 带有多个提交按钮的PHP表单
- 带有两个提交按钮的提交表单,每个按钮执行不同的操作问题
- 一个表单包含多个提交操作
- 具有多个提交按钮的Ajax
- Meteor:具有两个提交按钮的表单(确定事件处理程序中单击的按钮)
- 单个 HTML 表单中的多个提交按钮
- 使用jquery提交表单,该表单具有多个提交按钮,无需单击触发器
- 使用多个提交按钮触发表单提交
- 根据焦点获取两个提交按钮之一的值
- 无法禁用两个提交按钮之一,反之亦然
- 如何在没有Javascript的情况下使多个提交按钮在Oracle Apex上工作
- 如何使用 javascript 在 html 中为两个提交按钮放置两个不同的验证
- 如何清除两个提交按钮的验证问题
- PHP-AJAX:如何在表单上使用两个提交按钮,每个按钮都用于不同的目的