如何判断在PHP表单中单击了哪个按钮?

时间:2010-04-21 03:44:03

标签: php

我的页面上有几个按钮,但我不知道如何判断哪个按钮被点击了。 这是我的两个按钮的标记:

<input type="submit" id="btnSubmit" value="Save Changes" />
<input type="submit" id="btnDelete" value="Delete" />

4 个答案:

答案 0 :(得分:133)

使用html表单:

<input type="submit" name="btnSubmit" value="Save Changes" />
<input type="submit" name="btnDelete" value="Delete" />

要使用的php代码如下:

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    //something posted

    if (isset($_POST['btnDelete'])) {
        // btnDelete
    } else {
        //assume btnSubmit
    }
}

您应始终假设或默认使用第一个提交按钮以html源代码的形式显示。实际上,各种浏览器在以下情况下可靠地发送带有发布数据的提交按钮的名称/值:

  1. 用户使用鼠标或指针设备点击提交按钮
  2. 或者专注于提交按钮(它们标有选项),然后按下回车键。
  3. 存在提交表单的其他方式,并且某些浏览器/版本决定在某些情况下不发送任何提交按钮的名称/值。例如,许多用户在光标/焦点位于文本字段时按Enter键提交表单。表格也可以通过javascript提交,以及一些更模糊的方法。

    重要的是要注意这个细节,否则你的用户在提交表单时会感到非常沮丧,但是“没有任何反应”并且他们的数据会丢失,因为您的代码未能检测到表单提交,因为您没有预料到事实上,提交按钮的名称/值可能不会与发布数据一起发送。

    此外,上述建议也应该用于具有单个提交按钮的表单,因为您应该始终采用默认提交按钮

    我知道互联网上充斥着大量的表单处理程序教程,而且几乎所有这些都只是检查提交按钮的名称和值。但是,他们只是完全错了!

答案 1 :(得分:10)

在HTML中:

<input type="submit" id="btnSubmit" name="btnSubmit" value="Save Changes" />
<input type="submit" id="btnDelete" name="btnDelete" value="Delete" />

在PHP中:

if (isset($_POST["btnSubmit"])){
  // "Save Changes" clicked
} else if (isset($_POST["btnDelete"])){
  // "Delete" clicked
}

答案 2 :(得分:0)

所有您需要为每个按钮赋予name属性。并且您需要解决PHP脚本中每次按下按钮的问题。但是请注意为每个按钮赋予唯一的名称。因为PHP脚本大部分时间只使用名称

<input type="submit" name="Submit_this" id="This" />

答案 3 :(得分:-2)

你在用php或javascript询问。

如果它在php中,请提供该名称并使用post或get方法,之后您可以使用isset选项或将特定按钮名称选中该值。

如果是在js中,请使用getElementById