表单中的多个提交按钮

时间:2010-08-22 07:35:47

标签: php html forms

嘿,我是网络编程的新手。我过去几天一直在学习PHP,但我坚持一件事。

我的代码中有一个表单标记,它有两个提交按钮来操作数据。 由于我的表单标签上只能有一个操作定义,因此它只能引导我访问一个页面。 (不太确定)

现在,根据单击表单上的按钮,我想加载一个不同的页面。 一种方法是检查在if-else构造中单击的按钮,然后在分支中使用echo'...'并显示它就像是不同的页面。但出于某种原因,这似乎并不合适。有人可以给我一个更好的解决方案吗?感谢。

4 个答案:

答案 0 :(得分:2)

一种方法是使用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(); 
    });
​});​

在这里演示:http://jsfiddle.net/CMEqC/2/

答案 1 :(得分:1)

  

但出于某种原因,这似乎不对。

这是错误的假设 任何其他解决方案都会更糟糕。

检查服务器端是唯一可靠的解决方案 但是,分支中的echo不是必需的。还有很多其他方法 使用include语句是最明显的一个。

答案 2 :(得分:0)

仅作为参考... int HTML5按钮可以为我重新定义表单的动作,方法,类型等http://w3schools.com/html5/tag_button.asp,这是控制表单的好方法:)

答案 3 :(得分:-2)

添加基于@ 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。接下来,您需要通过检查该特定按钮上发送的值来了解所点击的按钮。