我的页面上有几个按钮,但是我不确定如何知道单击了哪个按钮。
这是我的两个按钮的标记:

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

最佳答案

使用类似如下的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源代码的形式出现。实际上,在以下情况下,各种浏览器会可靠地发送带有发布数据的提交按钮的名称/值:
  • 用户使用鼠标或定点设备
  • 逐字单击提交按钮。
  • 或将焦点放在“提交”按钮(它们在选项卡上)上,然后按Enter键。

  • 存在其他提交表单的方法,并且在某些情况下,某些浏览器/版本决定不发送任何提交按钮的名称/值。例如,许多用户在光标/焦点位于文本字段上时通过按Enter键来提交表单。表单也可以通过JavaScript以及其他一些晦涩的方法来提交。

    请务必注意此细节,否则用户提交表单时确实会让他们感到沮丧,但是“什么也没有发生”并且其数据丢失,因为您的代码无法检测到表单提交,因为您没有预料到这一事实提交按钮的名称/值可能不会与帖子数据一起发送。

    同样,上述建议也应用于具有单个提交按钮的表单,因为您应始终假定默认的提交按钮。

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

    关于php - 我如何知道在PHP表单提交中单击了哪个按钮?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2680160/

    10-12 01:08
    查看更多