【发布时间】:2021-07-21 05:20:09
【问题描述】:
我已经实现jquery autocomplete
(这只是一个模拟真实代码的例子)
let availableTags = [
undefined, // this is only a header and its results to undefined due to a lack of Id
"AppleScript",
"Asp",
"BASIC",
"C",
"C++",
"Clojure",
"COBOL",
"ColdFusion",
"Erlang",
"Fortran",
"Groovy",
"Haskell",
"Java",
"JavaScript",
"Lisp",
"Perl",
"PHP",
"Python",
"Ruby",
"Scala",
"Scheme"
];
$('#tags').autocomplete({
source: availableTags,
minLength: 0,
focus: function (event, ui) {
if(!ui.item){
// add code here
}
},
select: function (event, ui) {
//...
},
})
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<link rel="stylesheet" href="/resources/demos/style.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<div class="ui-widget">
<label for="tags">Tags: </label>
<input id="tags">
</div>
ul 的第一个 li 元素只是一个标题(不是真正的 li 选项)
,因此我根本不希望它被选中。
我设法阻止了click events,但它仍然对其他事件“敏感”
像mouseenter mouseover 等等我可以使用键盘激活这些事件
keydown
如何强制JS 忽略第一个li 元素被触发
甚至不通过键盘?
编辑:
顺便说一句,我可以控制第一个li标签为div\span或
任何其他标签(请记住,该标签将包含在 ul 中)
EDIT-2:
标头只应显示以完全由没有 JS event(鼠标、键盘等)操作,并且标头应为 undefined 以匹配真实代码
【问题讨论】:
-
应该显示但没有选中..对吗?
-
是的,只显示正确
标签: javascript html jquery jquery-ui-autocomplete