$()。焦点没有开火

时间:2015-02-09 10:10:33

标签: javascript jquery html setfocus

我正在尝试制作自动填充功能,并希望在用户按下“匹配”后将焦点应用于匹配列表中的第一项。箭头。

这会在搜索框内的keyup上触发并管理keypress的类型:

   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();

};

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

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!");
    });
};

2 个答案:

答案 0 :(得分:0)

$elem.focus(function () { /* do something */ })会在元素获得焦点时执行某些操作。

$elem.focus()$elem.trigger('focus')会将重点放在元素上。

答案 1 :(得分:0)

原来我试图专注于一个不可聚焦的元素,而不是形式控制。

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

<li tabindex="0"> Some item I want to focus </li>

这允许我拨打$().focus()并且工作正常。