【发布时间】:2016-02-20 19:33:35
【问题描述】:
我正在尝试找出一种方法来创建一个非常基本的自动完成功能,而无需第三方依赖。到目前为止,我已经使用 ajax 调用填充了一个结果列表,并且每个 li 上的鼠标 onclick 事件都按预期完成了这些字段。
我需要实现的是一个基于纯js的上/下/输入键导航系统,经过几个小时的搜索我放弃了。 this fiddle 非常完美地解释了我的情况,不同之处在于它确实需要 jQuery。
我不想在这里粘贴我自己的任何代码,因为最终目的是学习该过程,但由于我要链接到 jsfiddle,所以我必须这样做,所以这里是小提琴。
小提琴HTML:
<div id="MainMenu">
<ul>
<li class="active"><a href="#">PATIENT TEST</a></li>
<li><a href="#">QC TEST</a></li>
<li><a href="#">REVIEW RESULTS</a></li>
<li><a href="#">OTHER</a></li>
</ul>
</div>
<a href="#" id="btnUp">Up</a>
<a href="#" id="btnDown">Down</a>
小提琴 JS:
$(document).ready(function () {
$('#btnDown').click(function () {
var $current = $('#MainMenu ul li.active');
if ($current.next().length > 0) {
$('#MainMenu ul li').removeClass('active');
$current.next().addClass('active');
}
});
$('#btnUp').click(function () {
var $current = $('#MainMenu ul li.active');
if ($current.prev().length > 0) {
$('#MainMenu ul li').removeClass('active');
$current.prev().addClass('active');
}
});
$(window).keyup(function (e) {
var $current = $('#MainMenu ul li.active');
var $next;
if (e.keyCode == 38) {
$next = $current.prev();
} else if (e.keyCode == 40) {
$next = $current.next();
}
if ($next.length > 0) {
$('#MainMenu ul li').removeClass('active');
$next.addClass('active');
}
});
});
非常感谢任何愿意为我指明正确方向的人。
【问题讨论】:
-
到目前为止你尝试过什么?使用 document.addEventListener() 是一个好的开始。
标签: javascript html css ajax autocomplete