我希望我的文本框有,每次用户按Enter键的功能,它将专注于下一个最接近的元素任何他们(输入,复选框,按钮,单选,选择,一,格),只要他们可重点关注。 我怎样才能做到这一点使用jQuery?
Answer 1:
我已经这么做过。 这里试试我的解决方案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();
}
});
});
Answer 2:
顺便说一句,这是一个合法的技术问题,很可能是一个业务需求。 我一直要求建立这样的行为变成后台办公应用相当offten。 有迹象表明,这样的行为,许多原生应用。
我通过建立与使用CONTENTEDITABLE的DIV =真像下面的例子中我的形式解决了这一要求。
<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的下一个同级。
让我知道如果你需要进一步澄清。
希望这可以帮助。 祝好运。
Answer 3:
算法明智的:
记住,可以集中所有元素的列表。 不要依赖于DOM的这一点。 你必须保持自己的名单。 如果您不知道哪些元素是你已经做了一些错误的页面上。 DOM是一个没有观点的数据存储 ,因此对待它。 谁使用jQuery很多新手犯这样的错误,并用jQuery这个错误是容易。
找到网页上的所有元素focussable的位置。 按照1.最好的办法当然是知道的所有元素的相对位置,即使不看DOM。 使用jQuery你可以使用
.dimension()
您可能需要做一些簿记保持这个清单的更新(即当您的数据/视图改变)。查找当前聚焦元素的位置。
使用某种算法将其与你的其他位置的列表,并获得最接近 (这可能意味着很多东西,你可能知道你想要什么)。
然后将焦点设置到的元素。
有很多的选择,你可以在这里做,一些依赖于他人的表现取决于交互和界面设计。
文章来源: Find next closest focusable element using jquery? [closed]