我应该使用HTML中的<button>还是<input>?

7
我希望在HTML表单上创建一个表单提交按钮,该按钮的文本与将提交到主机的关键字不同。因此,我使用了:
<button type="submit" name="SubmitAction" value="Done" accesskey="D"><u>D</u>one for Now</button>

但是,W3Schools 警告:

注意:如果你在 HTML 表单中使用 <button> 元素,不同的浏览器可能会提交不同的值。因此,在 HTML 表单中创建按钮时,请使用 <input> 元素。

是否有办法使用 <input> 创建一个按钮,使该按钮上显示的文本与提交到主机的值不同?

不同浏览器发送的 <button> 的变化有哪些?

注意:我不需要支持 IE 9 以前的任何浏览器版本,而使用者实际上会在当前版本的 Chrome 和 Firefox 中使用。


7
你似乎在引用http://www.w3schools.com/tags/tag_button.asp网站的内容,请不要将W3Schools与W3C混淆。W3C维护许多网络标准。W3Schools借用类似名称的光环,发布一些已经过时并含有错误和安全问题的教程。 - Quentin
我注意到唯一一个在<button>上有问题的浏览器是IE7。虽然这已经足够成为一个问题,但我们可以编写一些JS来使<button>元素正确地工作。 - cHao
@cHao:IE7有问题吗?我知道IE6有问题(提交按钮的innerHTML)。IE7的情况如何? - Wesley Murch
@WesleyMurch:我希望只是IE6。这会让我最近的一个项目变得简单一些。而且,IE7似乎会提交表单中每个<button type="button">的内容,即使它们从未被点击过或做过任何操作。这个问题似乎只在IE8之后才得到了修复。 - cHao
显示剩余6条评论
1个回答

7
`

1
关于多个“input”想法:但我有多个按钮,每个按钮提交不同的操作 - 保存,完成,发布,放弃。 - Lawrence Dol
1
在表单提交时,根据所按下的按钮,使用一些JavaScript代码在onsubmit事件上附加隐藏输入。 - nathan hayfield
@SoftwareMonkey,你可以依赖于提交按钮的名称,但不能依赖于它的值。 - Explosion Pills
@ExplosionPills 是的,我总是使用name属性来查看哪个按钮被按下。 - nathan hayfield
1
@Nathan:我真的很讨厌在关键功能(而不是增强功能)中使用JS——将不同的提交名称映射到主机上的单个SubmitAction会更简单。但还是谢谢你的想法。 - Lawrence Dol

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接