我有一个允许用户提交值的表单,它工作正常,但现在我已经在表单中引入了另一个按钮"另存为草稿"
<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的值保存在数据库中,而不保存save as draft按钮下的值。为此我使用了以下代码
if ($_POST['draft'])
{
//exectue the required code
}
elseif($_POST['save'])
{
//exectue the required code
}
现在的问题是,如果我点击另存为草稿,它仍会检查该按钮下面的编码(例如我已经确定了所需位置),而要求是如果用户点击&#34 ;另存为草案&#34;那么值应该被保存,并且不需要填充它下面的其他值,但是如果单击了提交按钮,则需要填充所有值。任何人都可以告诉你如何这样做
答案 0 :(得分:0)
您只能使用javascript执行此操作。您需要在“保存草稿”按钮上放置一个onclick处理程序,该按钮将从该提交不需要的任何字段中删除所需的属性。或者,您可以从所有字段中删除所需的属性,并使用自定义javascript处理表单验证。
答案 1 :(得分:0)
您可以使用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>
SERVER SIDE ::
if($_POST["draft"]){
}
elseif($_POST["save"]){
}
答案 2 :(得分:0)
<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>
答案 3 :(得分:0)
对我来说,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>