兼容性?" /> <button type="submit">兼容性?

2024-03-30

我想要一个提交按钮,该按钮提交的值与按钮​​上显示的值不同。和<input type="submit">你似乎不能这样做。和<button type="submit">但是,它们可以是两个不同的值。问题是,它适用于所有浏览器吗?

在这里尝试这个测试代码:

<form method="get" action="">
    <input type="text" name="txt"/>
    <button type="submit" name="btn" value="val">text</button>
</form>

在 FF 3.6 中,它会相应地使用这两个值更新我的地址栏(并响应我在文本框中按 Enter 键)。在 IE 8 中,它也接受按 Enter 键,在地址栏中显示文本值,但它根本不将按钮的值显示为 GET 参数...这是否意味着它没有提交它?


我无法使用隐藏输入,因为我需要确定在没有 JS 的情况下单击了哪个按钮。


Test 2:

<form method="get" action="">
    <input type="text" name="txt"/>
    <button type="submit" name="submit1" value="submit1">submit</button>
    <input type="submit" name="submit2" value="submit2"/>
    <input type="submit" name="submit3" value="submit3"/>
</form>

在 IE8 中,按 Enter 键不会提交任何按钮,但单击“submit1”will发送一个值。它会发送“submit”,而不是“submit1”,这与 FF 不一致。但是,提交表单仅发送以下值one两个浏览器中的按钮,这意味着我可以检查which通过检查是否单击了按钮GET['submitX']相反存在! Chrome 在按 Enter 键(提交按钮2)时的行为略有不同。 Opera 看起来与 FF 一致...但是所有 4 个浏览器都只提交一个按钮。不过,我没有安装任何早期版本的浏览器......有谁知道它是否可以在早期版本中工作,特别是 IE6?


老帖子,但我认为这里遗漏了一个解决方案。这button[type=submit]一直存在行为不一致的问题,特别是对于旧的 IE,并且从 @Mark 的测试看来我们仍然存在问题。

相反,您可以使用两个不同的值name的属性input[type=submit]并解析这些服务器端以获得正确的操作。例如,您可以这样做:

<form method="get" action="">
    <input type="text" name="txt"/>
    <input type="submit" name="action[do_something]" value="Do Something Cool"/>
    <input type="submit" name="action[do_another]" value="Do Something Dangerous"/>
</form>

只有成功的(点击的或默认的)名称-值对才会被提交,因此,在 PHP 中,您可以轻松地执行以下操作:

<?php
if (isset($_GET['action']['do_something'])) {
    // do something
} else {
    // do another thing
}
?>

请注意,默认操作始终是源中第一个出现的操作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)