可访问性javascript:make down-up箭头键模拟TAB键
感谢您的关注,感谢您的反馈 我的(单击右下角的“我”) 按TAB键(或按键代码9)后,它将聚焦第一个链接,以聚焦可访问性javascript:make down-up箭头键模拟TAB键,javascript,jquery,html,accessibility,Javascript,Jquery,Html,Accessibility,感谢您的关注,感谢您的反馈 我的(单击右下角的“我”) 按TAB键(或按键代码9)后,它将聚焦第一个链接,以聚焦内的链接。但我必须先点击TAB键 如何使脚本自动对焦第一个链接而不必按TAB键 脚本也可以反转吗?向上箭头应该“重新自动对焦”输入字段,并让用户继续键入 我们如何使ESC关闭折叠?这样用户就不必重新单击按钮 $(文档).keydown( 职能(e) { 如果(e.keyCode==38){ e、 preventDefault();//这使得向上箭头不会滚动 $(“链接:焦点”
内的链接。但我必须先点击TAB键
$(文档).keydown(
职能(e)
{
如果(e.keyCode==38){
e、 preventDefault();//这使得向上箭头不会滚动
$(“链接:焦点”).prev().focus();
}
如果(e.keyCode==40){
e、 预防默认值();
$(“链接:焦点”).next().focus();
}
}
);
带输入搜索和隐藏井的标准引导3折叠:
<a class="demo" data-toggle="collapse" href="#Foo"><i class="fa fa-info"></i></a>
<div class="collapse" id="Foo">
<form action="" method="post" role="form">
<input autocomplete="off" autofocus="" class="form-control" id="inputSearch" name="search" placeholder="" type="text">
</form>
<!-- this auto populates on search input with database stuff -->
<div class="hidden" id="Foo2"></div>
</div>
以下是用户搜索查询后隐藏的well/autopopulate内容:
<div id="Foo2" class="">
<div tabindex="-1">
<a class="link" href="#">database result #1</a>
<a class="link" href="#">database result #2</a>
<a class="link" href="#">database result #3</a>
<a class="link" href="#">database result #4</a>
</div>
</div>
让我们按部分进行:
如何使脚本自动对焦第一个链接而不必按TAB键
您可以使用Bootstrap的collapse.bs.collapse:
脚本也可以反转吗?向上箭头应该“重新自动聚焦”输入字段,并让用户继续键入
是的;修改您的代码时,它将如下所示:
if (e.keyCode == 38) {
e.preventDefault();
$("#inputSearch").focus();
}
$(document).keyup(
function(e) {
if (e.keyCode == 38) {
e.preventDefault(); // this makes it so arrow up doesn't scroll
$("#inputSearch").focus();
}
if (e.keyCode == 40) {
e.preventDefault();
$(".link:focus").next().focus();
}
if (e.keyCode == 27) {
e.preventDefault();
$("#Foo").collapse('hide');
}
}
);
$('#Foo').on('shown.bs.collapse', function () {
$('#Foo2').children().children('a:first').focus();
e.preventDefault();
});
我们如何使ESC关闭折叠?这样用户就不必重新单击按钮
是,使用“折叠”(“隐藏”):
注:
- 使用keyup而不是keydown
- $中缺少一个点(链接:焦点)
if (e.keyCode == 38) {
e.preventDefault();
$("#inputSearch").focus();
}
$(document).keyup(
function(e) {
if (e.keyCode == 38) {
e.preventDefault(); // this makes it so arrow up doesn't scroll
$("#inputSearch").focus();
}
if (e.keyCode == 40) {
e.preventDefault();
$(".link:focus").next().focus();
}
if (e.keyCode == 27) {
e.preventDefault();
$("#Foo").collapse('hide');
}
}
);
$('#Foo').on('shown.bs.collapse', function () {
$('#Foo2').children().children('a:first').focus();
e.preventDefault();
});
<>这是标记<代码>可访问性< /代码>有很多事情要考虑,这不仅会让你的生活更轻松,而且让事情更容易接近。 这个答案很长,所以第4节涵盖了您的大部分观点,其他所有内容都是您可以对可访问性进行的改进 1.HTML语义 1a-按钮使用按钮,锚栓使用锚栓 由于没有JavaScript,“i”按钮无法工作,因此应该使用
而不是锚(
)
1b-确保屏幕阅读器用户可以访问信息
此外,您还需要在
中添加一些“视觉隐藏”文本,因为屏幕阅读器不会向用户显示任何信息(无法访问图标)
1c-确保图标对所有用户可见。
最后,从性能和可访问性的角度来看,使用font awesome是一个坏主意。一些用户(即患有诵读困难症的用户)可能会使用自定义样式表来交换网站上的字体。其中一些样式表会交换所有字体,这包括图标字体(因此,你漂亮的图标就会变成可怕的“矩形”,因为缺少字体)
每个内联SVG只有500字节,而这两种字体的加载时间为185千字节,这将缩短站点加载时间,并将请求数量减少2
数字1的粗略示例
。视觉隐藏{
位置:绝对!重要;
高度:1px;
宽度:1px;
溢出:隐藏;
剪辑:rect(1px 1px 1px);/*IE6,IE7*/
剪辑:rect(1px,1px,1px,1px);
空白:nowrap;/*添加了行*/
}
svg{
宽度:40px;
高度:40px;
填充:4px;
}
说明按钮的信息/相关文本
试着一次只问一个问题,巴德,给了你一个可能看起来很吓人的答案,但最后一部分有你问题的信息,其余部分是因为你标记了它可访问性
,所以我想我会给你一些建议来帮助你。哇!是的,SVG是一个不错的选择。哈哈哈…可怕的矩形。太对了!谢谢你的自动完成文章。我会查出来的。非常感谢你的反馈和花时间分享。我已经整合了你的智慧。没问题,你可能想找到一个比我使用的更好的“i”。还可以运行svg(复制粘贴构成svg的原始文本)优化它们并清除所有你不需要的垃圾。这是一个很好的工具。你可能知道在a:first
之后“循环”的建议吗?如果我再次按下箭头,它将不会转到第二个链接或第三个链接,等等。只有第一个链接。我尝试了一些方法,但没有效果。它看起来像。next()
曾经是诀窍。嗯。如果,.focus()部分位于错误的位置,如果发生这种情况,则应将其附加到打开隐藏内容的函数(即“i”按钮上的单击处理程序)再想一想,您可能在我链接的另一个示例中使用了错误的函数,并且设置得太早。您需要在打开框后查找可以聚焦的项目,否则它们将不会被归类为可聚焦(因为它们在display:none;
$(document).keyup(
function(e) {
if (e.keyCode == 38) {
e.preventDefault(); // this makes it so arrow up doesn't scroll
$("#inputSearch").focus();
}
if (e.keyCode == 40) {
e.preventDefault();
$(".link:focus").next().focus();
}
if (e.keyCode == 27) {
e.preventDefault();
$("#Foo").collapse('hide');
}
}
);
$('#Foo').on('shown.bs.collapse', function () {
$('#Foo2').children().children('a:first').focus();
e.preventDefault();
});