HTML:如何防止焦点从元素移动
HTML: how to prevent moving focus from element?
我有几个具有tabindex
属性的元素。当我点击它们之外的任何页面区域时,它们都会失去焦点。
当前行为-在常规桌面应用程序中,如果某个元素不可聚焦,则单击该元素不会将焦点从先前聚焦的元素移开。
但在HTML中,情况并非如此:即使我单击没有tabindex
的元素,我的可聚焦元素也总是失去焦点。
必需行为-是否可以在HTML中防止上述行为?我希望只有当我点击其他可聚焦元素时,我的元素才会失去焦点,比如上面提到的桌面应用程序。
这是一种破解,可以用更好的方式实现。
逻辑
- 创建一个全局变量
lastSelectedInput
来存储上次访问的元素的id
- 添加一个类来定义边界
- 在主体上添加点击事件,如果
event.path
不包含边界元素,则调用lastSelectedInput
的焦点
JSFiddle
代码
(function() {
var lastSelectedInput = "";
function bodyClick(e) {
var inside = false;
for (var i in e.path) {
if (e.path[i].className == "content") inside = true;
}
if (!inside) {
document.getElementById(lastSelectedInput).focus();
}
}
function inputFocus(e) {
lastSelectedInput = e.target.id;
e.stopPropagation()
}
function registerEvents() {
document.getElementsByTagName("body")[0].addEventListener("click", bodyClick);
var inputs = document.getElementsByTagName("input")
for (var i = 0; i < inputs.length; i++) {
inputs[i].onfocus = inputFocus;
}
}
registerEvents();
})();
.content {
margin: 15px;
background: #ddd;
border: 2px solid gray;
border-radius: 4px;
height: 200px;
width: 200px;
padding: 5px;
}
<div>
<div class="content">
<input type="text" id="txt1">
<input type="text" id="txt2">
<input type="text" id="txt3">
<input type="text" id="txt4">
<input type="text" id="txt5">
</div>
</div>
相关文章:
- jQuery-将列表项的一个元素移动到同一项的另一个元素中+对我的列表中的每个项执行此操作
- 将元素移动到右侧,然后返回到左侧
- 将jQuery draggable()元素移动到新的父元素
- Jquery-将图像从一个元素移动到另一个元素
- Css-是否可以在调整屏幕大小时使元素移动,以使其适合屏幕
- 制作元素移动的动画
- 如何将较低的z级元素移动到透明png下方
- SVG文本锚点设置使文本元素移动
- 如何将元素移动到鼠标位置
- d3:应用 scale() 变换时元素移动
- jQuery UI 工具提示在源 DOM 元素移动时卡住打开
- 如何在页面上选择文本块,然后将元素移动到其前面
- 下拉列表使元素移动
- 将一个元素移动到另一个元素中,其余元素将转到第三个位置
- 将最后一个元素移动到数组中的第二个项目的最快方法
- Javascript以可变的角度和速度为元素移动制作动画
- 在 JavaScript 中将数组元素移动到变量
- 使用jQuery单击时将元素移动/复制到另一个位置
- 将排序数组的数组元素移动到具有特殊逻辑的另一个位置
- 如何跟踪元素移动和特定位置的触发功能