我正在使用Jquery自动完成功能,并且我已经创建了一个自定义焦点方法。目标是在元素聚焦时呈现附加信息,然后在模糊时将元素返回到其默认状态。因为自动填充功能没有烘焙模糊方法,所以我使用mouseleave将自己完全破解了:
focus: function( event, ui ) {
event.preventDefault();
var menu = $(this).data("uiAutocomplete").menu.element;
var focused = menu.find("li:has(a.ui-state-focus)");
var child = $(focused).children().first();
var item = ui.item.value;
var text = "<div>" + item.name + "</div>";
if (item.publications.length > 0) text += "<div>" + item.publications + "</div>";
$(child).html(text).attr("name", item.name);
$(focused).on("mouseleave", function() {
$(child).html($(child).attr("name"))
});
},
虽然这适用于鼠标滚动,但当用户使用键盘在列表中上下导航时,它不起作用。要做到这一点,我需要使用像焦点一样的东西:
$(focused).on("focusout", function() {
$(child).html($(child).attr("name"))
});
不幸的是,焦点没有明显的效果,无论如何。没有错误消息,也没有更改的文本 - 甚至没有鼠标悬停。知道发生了什么事吗?
答案 0 :(得分:0)
向li
:has(a.ui-state-focus)
个属性tabindex
提供一些值。例如。 <li tabindex="0"><a[...]</li>
。
L.E。:tabindex
使focus
个html元素成为可能。因此,他们可以在模糊时触发focusout
。