代码之家  ›  专栏  ›  技术社区  ›  Sonny Boy

如何判断在php表单提交中单击了哪个按钮?

php
  •  71
  • Sonny Boy  · 技术社区  · 15 年前

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

    <input type="submit" id="btnSubmit" value="Save Changes" />
    <input type="submit" id="btnDelete" value="Delete" />
    
    3 回复  |  直到 7 年前
        1
  •  130
  •   goat    7 年前

    使用如下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. 或者将焦点放在提交按钮上(它们选项卡指向该按钮),然后按下Enter键。

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

    注意这个细节是很重要的,否则当用户提交表单时,您的用户会非常沮丧,但是“什么都没有发生”,并且他们的数据会丢失,因为您的代码未能检测到表单提交,因为您没有预料到提交按钮的名称/值y不与post数据一起发送。

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

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

        2
  •  10
  •   MiffTheFox    15 年前

    在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
    }
    
        3
  •  -2
  •   Karthik    15 年前

    你是用php还是javascript提问。

    如果它是在PHP中,请给出它的名称,并使用post或get方法,然后可以使用isset选项,或者将特定按钮名称选中为该值。

    如果它在JS中,请使用getElementByID

    推荐文章