如果使用按钮元素提交,有没有办法识别表单?

时间:2010-03-02 05:51:32

标签: php html forms user-input

我已经开始使用button元素提交表单

<button type="submit">Send</button>

我知道如果我使用了这样的输入元素,我可以很容易地在PHP中确定提交了哪个表单(通过阅读下面示例中的$_POST['form']的值)。

<input type="submit" value="Send" name="form" value="contact" />

有没有办法使用按钮元素?每个表单将有一个按钮元素。我知道IE6在一个表单中有多个按钮元素的问题,IE7发送innerHTML而不是值。

这可靠吗?

HTML

<button type="submit" name="form-contact" value="true">Send</button>

PHP

if (isset($_POST['form-contact'])) {
    // Contact Form submitted
}

非常感谢

3 个答案:

答案 0 :(得分:4)

这不是你问题的直接答案,但你总是可以使用隐藏的输入来区分表格:

<form>
<input type="hidden" name="form-name" value="form-1" />
</form>

另一种形式:

<form>
<input type="hidden" name="form-name" value="form-2" />
</form>

答案 1 :(得分:2)

如果处理表单的脚本需要区分不同的表单,则应使用隐藏的输入,因为它是可靠的跨浏览器。测试提交按钮的名称/值不是很可靠,因为如果用户通过回车键提交表单而某些浏览器根本不会发送提交按钮的名称/值对,而另一个表单元素具有焦点。在这种常见情况下失败的表单处理器真的很蹩脚。按钮,输入类型=按钮,输入类型=图像都有跨浏览器不一致。

你甚至很少甚至需要隐藏的输入。您可以为不同的表单使用不同的输入名称。例如name = contact_email,name = order_email等..然后只测试哪一个存在以确定表单标识。但是,这变得更加复杂,我个人认为只要将隐藏的输入放在那里就不值得付出额外的努力。

答案 2 :(得分:0)

您可以使用AJAX发送与单击按钮对应的form_name,只需在网址中嵌入表单名称