在select enter click上,默认情况下会提交表单。根据可访问性标准,如果将焦点放在enter click上的select元素上,则应打开列表项。我想知道是否可以使用本机select元素进行可访问的下拉列表符合无障碍条件
<div class="custom-dropdown">
<select id="cities" name="select">
<option value="1">Delhi</option>
<option value="2">Mumbai</option>
</select>``
</div>
我已阻止默认的提交行为。
$('.custom-dropdown').keydown(function (event) {
if (event.keyCode == 13) {
event.preventDefault();
return false;
}
});
我已经尝试过keyup事件来触发click事件,但是它不起作用
$('#cities').keyup(function (e) {
if (e.keyCode == 13) {
$("#cities").trigger("click");
}
});
答案 0 :(得分:1)
我敢肯定,将自动提交表单的唯一元素是“提交”按钮。
<input type="submit" value="foo">
或
<button>foo</button>
(type
元素的默认<button>
是“提交”)
<select>
未定义为提交表单。您确定在按 enter 时将焦点放在
您还应该查看“ 4.10.18.6. Form submission”的规格
答案 1 :(得分:0)
您将关注点放在示例上,而不是规范上:
此页面上的示例列表框实现了以下键盘界面
如果您引用Keyboard Interaction for the Listbox Design Pattern,则不会提及 Enter 键。
该示例使用 Enter ,因为列表框的触发器是一个按钮。
,一般来说,ARIA规则适用于无法使用标准元素的情况如果您可以将本机HTML元素[HTML51]或属性与您已经内置的语义和行为一起使用,而不是重新使用元素并添加ARIA角色,状态或属性以使其可访问,那么请执行这样。
换句话说,当您不实现自己的控件时,您不必理会这些规则。