查找下一个最接近的聚焦元素的使用jQuery? [关闭](Find next closest f

2019-07-17 18:30发布

我希望我的文本框有,每次用户按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:

算法明智的:

  1. 记住,可以集中所有元素的列表。 不要依赖于DOM的这一点。 你必须保持自己的名单。 如果您不知道哪些元素是你已经做了一些错误的页面上。 DOM是一个没有观点数据存储 ,因此对待它。 谁使用jQuery很多新手犯这样的错误,并用jQuery这个错误是容易。

  2. 找到网页上的所有元素focussable的位置。 按照1.最好的办法当然是知道的所有元素的相对位置,即使不看DOM。 使用jQuery你可以使用.dimension() 您可能需要做一些簿记保持这个清单的更新(即当您的数据/视图改变)。

  3. 查找当前聚焦元素的位置。

  4. 使用某种算法将其与你的其他位置的列表,并获得最接近 (这可能意味着很多东西,你可能知道你想要什么)。

  5. 然后将焦点设置到的元素。

有很多的选择,你可以在这里做,一些依赖于他人的表现取决于交互和界面设计。



文章来源: Find next closest focusable element using jquery? [closed]