嗨,我对Web编程非常陌生。过去几天我一直在学习PHP,但我陷入了一件事。表单中的多个提交按钮
我在我的代码中有一个窗体标签,它有两个提交按钮来操作数据。 由于我的表单标签只能有一个动作定义,因此它只能导向一个页面。 (不太确定)
现在取决于单击窗体上的按钮,我想加载一个不同的页面。 一种方法是检查在if-else结构中单击的按钮,然后在分支中使用echo'...'并显示为不同的页面。但由于某种原因,这看起来不正确。有人能给我一个更好的解决方案吗?谢谢。
嗨,我对Web编程非常陌生。过去几天我一直在学习PHP,但我陷入了一件事。表单中的多个提交按钮
我在我的代码中有一个窗体标签,它有两个提交按钮来操作数据。 由于我的表单标签只能有一个动作定义,因此它只能导向一个页面。 (不太确定)
现在取决于单击窗体上的按钮,我想加载一个不同的页面。 一种方法是检查在if-else结构中单击的按钮,然后在分支中使用echo'...'并显示为不同的页面。但由于某种原因,这看起来不正确。有人能给我一个更好的解决方案吗?谢谢。
一种方法是使用Javascript切换窗体的动作,具体取决于哪个控件被点击。下面的示例使用jQuery库:
<form id="theForm" action="foo.php">
...
<input id="first" type="submit"/>
<input id="second" type="submit"/>
</form>
$(document).ready(function() {
$("#theForm input").click(function(e) {
e.preventDefault();
if(e.target.id == 'first') {
$("#theForm").attr("action", "somePage.php");
} else {
$("#theForm").attr("action", "anotherPage.php");
}
alert($("#theForm").attr("action"));
$("#theForm").submit();
});
});
基础上添加@ karim79的另一种解决方案,因为它标记为PHP:
<form id="theForm" action="foo.php">
...
<input id="first" name="button" value="first" type="submit"/>
<input id="second" name="button" value="second" type="submit"/>
</form>
在你的foo.php
,做这样的事情:
<?php
$submit = isset($_GET['button']) ? trim($_GET['button']) : '';
if($submit == 'first')
{
header('Location: somePage.php');
}
else if($submit == 'second')
{
header('Location: anotherPage.php');
}
?>
摘要: 能够阅读您的按钮(2个提交按钮),您需要在每个按钮上添加name
。为了简单起见,只需在两者上使用相同的名称即可。然后,添加不同的value
。接下来,您需要通过检查在特定按钮上发送的值来知道正在单击哪个按钮。
这将丢弃所有的表单数据,当它重定向时,但它与问题描述的方法相同。 – Quentin 2010-08-22 08:45:30
只是作为参考... INT HTML5按钮可以重新定义表单的操作,方法,类型等http://w3schools.com/html5/tag_button.asp对我来说,这是控制形式:)
在2030年,当没有实现该功能的浏览器可能不足以担心时,此答案可能会有用。 – Quentin 2010-08-22 08:47:19
我知道..这就是为什么我说“作为参考”...我认为这是一个很好的功能,虽然 – pleasedontbelong 2010-08-22 08:51:40
的问题是,有其他的方法好方法提交表单而不是点击一个提交按钮 - 例如,当你按下输入文本“输入”时如何?我认为你应该在最后有一个单选按钮/选择/复选框,而不是两个提交按钮。 – 2010-08-22 08:10:48