使用jquery找到下一个最近的可聚焦元素
Find next closest focusable element using jquery?
我希望我的文本框具有这样的功能,即每次用户按回车键时,它都会聚焦到下一个最近的元素,无论它们是什么(输入,复选框,按钮,单选,选择,a,div),只要它们可以聚焦。我如何使用jquery做到这一点?
我以前已经这样做过了。试试我的解决方案http://jsfiddle.net/R8PhF/3/
$(document).ready(function(){
$('#mytextbox').keyup(function(e){
var code = (e.keyCode ? e.keyCode : e.which);
if(code == 13) {
var tabables = $("*[tabindex != '-1']:visible");
var index = tabables.index(this);
tabables.eq(index + 1).focus();
}
});
});
顺便说一下,这是一个合理的技术问题,很可能是一个业务需求。我经常被要求在后台应用程序中构建这样的行为。有很多原生应用都是这么做的。
我通过使用div和contenteditable=true来构建我的表单,就像下面的例子一样。
<html>
<head>
<style type="text/css">
div.input { border:1px solid #aaa; width:300px; }
</style>
</head>
<body>
<div contenteditable="true" class="input"><strong>explore the world,</strong> e.g. paris, france</div>
</body>
</html>
您可以为ENTER捕获键事件,并使用JQuery简单地将焦点设置在下一个兄弟节点上。
如果你需要进一步的说明,请告诉我。
希望这对你有帮助。好运。
算法:
-
列出所有可以集中的元素。要而不是依赖于DOM。你必须自己保存列表。如果您不知道页面上的哪些元素,那么您已经做错了。DOM是一个视图而不是一个数据存储,请相应地对待它。很多使用jQuery的新手都会犯这个错误,使用jQuery很容易犯这个错误。
-
查找页面上所有可聚焦元素的位置。根据…最好的方法当然是知道所有元素的相对位置,甚至不用查看DOM。使用jQuery,您可以使用
.dimension()
。你可能需要做一些记帐来保持这个清单的更新。 -
查找当前聚焦元素的位置
-
使用一些算法将其与您的其他位置列表进行比较,并获得最接近的(这可能意味着很多事情,您可能知道您想要的是什么)。
-
然后将焦点设置为元素
相关文章:
- 将事件聚焦/模糊在可编辑内容的元素上
- 使用jquery聚焦选择html元素
- 阻止html元素聚焦
- Jquery Ajax无法't获取当前聚焦的输入元素
- 自动扫描和聚焦HTML页面的元素
- 从onBlur事件中获取新聚焦的元素(如果有的话)
- 父元素悬停/活动/聚焦时隐藏元素
- 如何在输入字段以外的元素上触发聚焦
- 聚焦和模糊错误元素触发的事件
- 聚焦奥蕾莉亚中的元素
- 如何让我的键码聚焦元素
- 未知错误:无法聚焦元素
- 聚焦元素隐藏在固定菜单后面
- 如何在jQuery中淡出除聚焦元素以外的所有元素
- 在聚焦元素时发送参数
- jQuery聚焦元素高亮,字符串化属性
- 带有附加模糊或focusout事件的已聚焦元素在第二次点击时触发它
- 为什么触发点击合成不聚焦元素
- 验证和聚焦元素
- 使用jquery找到下一个最近的可聚焦元素