html - 如何通过使用键盘在表单中导航来用边框替换轮廓?

标签 html css

当您有一个网站和一个表单时,您可以使用键盘上的 Tab 键在表单中导航。例如,谷歌浏览器将为所选元素提供蓝色轮廓。

HTML

<form method="" action="">
  <input type="text" tabindex="1">
  <input type="text" tabindex="2">
  <input type="submit" tabindex="3">
</form>

CSS

input:focus {
  outline: none;
  border: 1px solid blue;
}

参见 FIDDLE .

这工作正常,但我希望在用户使用键盘导航时应用它。当正常专注于输入时,我希望边框消失。

所以我在 CSS 中想要的是以下内容(不工作):

input:navigatedbytabkey { ... }

有人知道好的解决方案吗?

最佳答案

你不能用纯 CSS 做到这一点,但你仍然可以用 javascript/Jquery 做到这一点。

您可以做的是为 Tab 键按下设置一个事件监听器,并在该事件上检查哪个元素获得焦点,如果它在您的表单内,则突出显示它。我发现使用类而不是直接应用 css 来突出显示它更好。

我会使用 JQuery,因为它可以节省很多宝贵的时间。

CSS:

.tab-focused{
    //HERE COMES YOUR ON-TAB-FOCUS STYLING
}

JS:

$(document).ready(function(){
    $(window).keyup(function(e){//this listens for any key being presssed
        if(e.keyCode==9){//this checks that the key pressed is tab
            var focusedElement = $(':focus');
            if (focusedElement.parents('form').length){//check if the focused element is inside the form
                focusedElement.addClass('tab-focused');
                //This still has one problem. When you get out of an element, it's class is not being removed. So, let's add another event to detect whenever they lose focus(blur)
                focusedElement.one('blur',function(){
                    $(this).removeClass('tab-focused');
                });
            }
        }
    }
});

我还没有测试过这个,但它应该可以工作,或者至少,它是你开发你想要的东西的一个开始。如果您无法让它发挥作用,请不要害怕寻求进一步的帮助。

祝你好运!

关于html - 如何通过使用键盘在表单中导航来用边框替换轮廓?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35363073/

相关文章:

javascript - 如何使用 jQuery 获取特定元素

html - 什么会导致 bootstrap 列表现得像行?

html - 在换行时重置 margin-left?

javascript - 选择下拉适合当前选择的宽度

html - 如何让两个元素处于同一高度?

html - Bootstrap 4 图像缩略图类

php - 停止使用 ajax 、 javascript 、 php 刷新

javascript - 删除子元素的 href 标签 a

java - 如何在 android textview 上使用 removeSpan()?

html - 如何在没有表格的情况下设计具有多个颜色 Pane 的网页