I'm trying to figure out a way to create extremely simple autocomplete without third-party dependencies. so far I have populated the list of results with an ajax call, and with the mouse onclick events on each script the fields complete as expected.
what I need to implement is an up / down / input navigation system based on pure js, and after several hours spent searching, I gave up. this script fully explains my situation, with the difference that it requires jQuery.
I would prefer not to embed any of my own codes here, since the ultimate goal is to study the process, but since I am attached to jsfiddle, I need a fiddle here.
HTML fiddle:
<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 fiddle:
$(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');
}
});
});
, .