如何判断在PHP表单提交中点击了哪个button?
我的页面上有几个button,但我不知道如何判断哪个button被点击。 这是我的两个button的标记:
<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 } }
您应该始终假设或默认第一个提交button出现在HTML源代码的forms 。 实际上,在以下情况下,各种浏览器可靠地发送提交button的名称/值和发布数据:
- 用户从字面上用鼠标或定位设备点击提交button
- 或者关注提交button(他们标签),然后按下回车键。
还有其他提交表单的方式,有些浏览器/版本在这些情况下决定不发送任何提交button的名称/值 。 例如,当光标/焦点位于文本字段上时, 许多用户通过按Enter键提交表单。 表单也可以通过javascript提交,还有一些比较模糊的方法。
注意这些细节非常重要,否则在提交表单时,用户可能会感到挫败,但“没有任何反应”,而且由于代码未能检测到表单提交,数据丢失。
此外,上面的build议也应该用于单个提交button的表单,因为你应该总是假定一个默认的提交button。
我知道互联网上充满了大量的表单处理程序教程,几乎所有的function都不过是检查提交button的名称和值。 但是, 他们是错的!
在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 }
你问在PHP或JavaScript。
如果是在php中,给它的名称,并使用post或get方法,之后,您可以使用isset的选项或特定的button名称被检查到该值。
如果它在js中,请使用getElementById