我正在尝试制作自动填充功能,并希望在用户按下“匹配”后将焦点应用于匹配列表中的第一项。箭头。
这会在搜索框内的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!");
});
};
答案 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()
并且工作正常。