表单之外的按钮html标签是否有效?

时间:2013-01-22 15:06:35

标签: html html5 forms button

我只是注意到,在soundcloud中,轨道上的“动作”按钮(如,重新发布等等)都是html按钮标签。此外,它们既不在形式内,也不与形式相关联,也不提交表格(它们显然是通过javascript处理的)。这是有效的HTML吗?没有表格的按钮是否可以存在?或者这只是使这些按钮成为可点击的div?屏幕阅读器的有效/无效程度如何?

2 个答案:

答案 0 :(得分:57)

button元素在文档正文中可能出现文本级标记的任何位置都有效。这样的元素不需要与form元素有任何关系。当前权威引用是HTML 4.01 specification,正式规则在DTD中,但您可以使用快捷方式并使用W3C Markup Validator来检查文档是否有效。

如果未与表单相关联,则button元素与span元素(而非div(默认情况下为块级)没有太大差异),但是{{ 1}}有特殊的默认渲染。浏览器和辅助软件可以button视为特殊的,并且最安全的方法是仅将button用于单击时应该触发某些操作的元素。相反,这些元素通常最好使用button标记来表示,尽管您也可以通过其他方式创建类似于按钮的元素(主要是图像或CSS)。

在表单外部,button元素默认为button(这通常是唯一明智的type=button)。这意味着它只能通过JavaScript产生效果。这不会使它以任何方式无效。但是,您可以考虑通过JavaScript生成这样的按钮,而不是将它们作为静态HTML内容,这样当禁用脚本时,就不会有(有效但是)令人困惑的按钮不执行任何操作。

解决以下评论中的澄清问题:

type元素类似于button type=button;区别在于后者没有内容,但是从input type=button属性中获取按钮中显示的文本,而value的内容可以是“丰富的”(带有标记)。

对于任一元素,如果使用它们会导致服务器操作(通常通过Ajax调用),那么我们确实可以询问页面如何在禁用JavaScript的情况下工作。但是这个问题可能是无关紧要的(可能页面是一个应该用JavaScript运行的应用程序),并且无论如何没有任何正式错误的想法。

为什么它们存在?为了方便作者和遗留原因,我想说。类似地,人们可能会问为什么HTML根本没有事件属性,如果没有客户端脚本就无法工作,并且可以将事件处理程序分配给JavaScript中的元素。但是在早期,这是不可能的,即使在目前,使用button元素或button属性比在JavaScript中做事更方便(并且,用于制作元素看起来像一个按钮,CSS)。还有一点是onclickbutton为元素创建依赖浏览器的外观,并且可能有人认为,对于大多数用户来说,任何具有浏览器默认样式的按钮的样式都被视为一个按钮。

答案 1 :(得分:5)

是。很长一段时间。

来自whatwg.org

  

可以使用此元素的上下文:

     

预计短语内容。

在ajax时代,大多数输入不仅仅是通过提交表单来发送。大多数按钮仅用于在使用可识别的小部件时执行点击操作。