首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$().focus未触发

$().focus未触发
EN

Stack Overflow用户
提问于 2015-02-09 18:10:33
回答 2查看 63关注 0票数 0

我正在尝试制作一个自动完成功能,并希望一旦用户按下‘向下’箭头,就将焦点应用于匹配列表中的第一个项目。

这会在搜索框中触发keyup,并很好地管理按键类型:

代码语言:javascript
复制
   var handleKeyCode = function (e) {

    switch (e.which) {

        // Arrow up
        case 38:
            alert("Up");
            break;

        // Arrow down
        case 40:
            console.log("This fires fine...");
            arrowDown();
            break;

        // Other keys
        default:
            filter();
    };

    e.preventDefault();

};

一旦向下箭头被按下,它就会触发,但是,由于某些原因,它不会应用焦点代码。当我通过控制台登录选择器时,它返回了正确的列表项,只是没有聚焦。

代码语言:javascript
复制
var arrowDown = function () {

    console.log("Code below finds the selector fine:");
    console.log($('.scheme-list li:visible:first'));

    $('.scheme-list li:visible:first').focus(function () {
        console.log("The selector is not focused AND...");
        console.log("Anything in here is not fired!");
    });
};
EN

回答 2

Stack Overflow用户

发布于 2015-02-09 18:19:44

每当元素获得焦点时,$elem.focus(function () { /* do something */ })都会做一些事情。

$elem.focus()$elem.trigger('focus')将在元素上设置焦点。

票数 0
EN

Stack Overflow用户

发布于 2015-02-09 18:41:20

原来我是想把注意力集中在一个不可聚焦的元素上,而不是一个表单控件上。

为了解决这个问题,我向我的每个列表项添加了一个tabindex属性,以便在这些元素上启用焦点事件,如下所示:

代码语言:javascript
复制
<li tabindex="0"> Some item I want to focus </li>

这样我就可以调用$().focus()了,并且工作得很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28407273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档