使用按钮标签时,是否必须定义 type 属性,还是仅具有语义?
<button>Click Me</button>
不,您不必指定它,它默认为 value submit。
请参阅HTML 4.x 规范:
type (button|submit|reset) submit -- for use as form button --
^^^^^^ default value
与显示 #REQUIRED 而不是给出默认值的表单的 action 属性进行比较。
action %URI; #REQUIRED -- server-side form handler --
正如@Quentin 的回答所解释的,该type属性不是必需的,默认为submit. HTML5 对此没有任何改变。但是,情况稍微复杂一些。
如果元素出现在任何form元素之外,上述仍然适用,但没有要提交的表单。HTML5 通过描述功能来澄清这一点,以便清楚地表明,如果没有“表单所有者”(封闭form元素或与具有 HTML5 属性的form元素显式关联的button元素),则没有任何动作——除非使用脚本编程, 当然。
实际上,这意味着在form元素之外,button元素默认为type=button功能性的。这意味着如果一个默认的button元素type改变了它的上下文(例如,被包裹在一个form元素中),它的功能也会改变。因此,为了清楚和安全起见,最好明确指定type属性,例如<button type=button>or <button type=submit>。