我有一些使用这样的提交butttons的表单:
<input type="button" onclick="validateAndSubmit()">
他们工作正常,但是辅助功能检查器说表单中没有提交按钮,因为没有提交按钮。
我知道type =“button”清楚地表明它充当了一个按钮,但我不知道如何向辅助技术表明它在没有实际使用type =“submit”的情况下充当提交按钮。 (我宁愿不使用实际的提交按钮,因为意外的javascript错误会提交表单。当然你可以捕获错误,在这个意义上它只是不那么健壮,我想知道是否还有另一种方式。)
是否有ARIA角色或其他技术可以明确按钮提交表单(假设所有内容都有效)?
答案 0 :(得分:3)
<button type="submit" onclick="validateAndSubmit()">Submit</button>
应该做的伎俩。在这种情况下,不需要ARIA角色(button
),因为此处使用的button
是HTML规范中定义的。
答案 1 :(得分:1)
我不同意现有的两个答案。
确实,在表单中使用提交按钮并不是一项义务。 但是,如果您要提交表单,必须有提交按钮。
按钮<input type="button" onclick="validateAndSubmit()">
的弱点在于您必须单击此按钮才能触发该功能并提交表单。
但是,大多数用户都希望,在任何字段中按Enter键时提交表单,而不一定是提交按钮。 典型用例:键入您的电子邮件,选项卡,键入您的密码,然后直接按Enter键登录,而不是用鼠标点击&#34;登录&#34;或再按一次时间标签然后输入。
您的虚假提交按钮不允许这样做。您应该使用真实的提交按钮<input type="submit" />
替换它,并使用表单上的提交事件(<form onsubmit="...">
)。
如果您的问题是意外的JavaScript错误导致表单被提交错误输入,请不要忘记您必须再次检查输入服务器端。
为了以防万一,如果您通过AJAX提交并且如果您不确定您的代码,那么您完全可以使用try ... catch ... finally并在finally子句中执行event.preventDefault()
绝不会引发错误;这不是一个糟糕的防御性编程解决方案。
答案 2 :(得分:0)
Form
元素不需要submit
按钮。没有这样的义务。
您使用的辅助功能检查器是错误的。
W3C在其文档中使用了一些没有提交按钮的表单示例:
Finally, to make the form submittable we use the button element: