[ACCEPTED]-Keyboard up and down arrows-arrow-keys
Use the onkeydown
and onkeyup
events to check for key press 1 events in your results div:
var UP = 38;
var DOWN = 40;
var ENTER = 13;
var getKey = function(e) {
if(window.event) { return e.keyCode; } // IE
else if(e.which) { return e.which; } // Netscape/Firefox/Opera
};
var keynum = getKey(e);
if(keynum === UP) {
//Move selection up
}
if(keynum === DOWN) {
//Move selection down
}
if(keynum === ENTER) {
//Act on current selection
}
copy and paste this piece of code and try..
<style>
div.active{
background: lightblue
}
</style>
<center>
<input type="text" id="tb">
<div id="Parent" style="position:absolute;display:block;left:428px; width:146px;top:38px; height:100px; border: 2px solid lightblue; overflow:auto;">
<div id="childOne">1 </div>
<div id="childOne">2 </div>
<div id="childOne">3 </div>
<div id="childOne">4 </div>
<div id="childOne">5 </div>
<div id="childOne">6 </div>
<div id="childOne">7 </div>
<div id="childOne">8 </div>
<div id="childOne">9 </div>
<div id="childOne">10 </div>
</div>
</center>
<script type="text/javascript">
var scrolLength = 19;
function autocomplete( textBoxId, containerDivId ) {
var ac = this;
this.textbox = document.getElementById(textBoxId);
this.div = document.getElementById(containerDivId);
this.list = this.div.getElementsByTagName('div');
this.pointer = null;
this.textbox.onkeydown = function( e ) {
e = e || window.event;
switch( e.keyCode ) {
case 38: //up
ac.selectDiv(-1);
break;
case 40: //down
ac.selectDiv(1);
break; }
}
this.selectDiv = function( inc ) {
if(this.pointer > 1){
scrollDiv();
}
if(this.pointer == 0)
document.getElementById("Parent").scrollTop = 0;
if( this.pointer !== null && this.pointer+inc >= 0 && this.pointer+inc < this.list.length ) {
this.list[this.pointer].className = '';
this.pointer += inc;
this.list[this.pointer].className = 'active';
this.textbox.value = this.list[this.pointer].innerHTML;
}
if( this.pointer === null ) {
this.pointer = 0;
scrolLength = 20;
this.list[this.pointer].className = 'active';
this.textbox.value = this.list[this.pointer].innerHTML;
}
}
function scrollDiv(){
if(window.event.keyCode == 40){
document.getElementById("Parent").scrollTop = scrolLength;
scrolLength = scrolLength + 19;
}
else if(window.event.keyCode == 38){
scrolLength = scrolLength - 19;
document.getElementById("Parent").scrollTop = scrolLength;
}
}
}
new autocomplete( 'tb', 'Parent' );
</script>
0
I assume that you have an input which handles 12 the input.
map onkeyup-eventhandler for 11 that input in which you read out event.keyCode, and 10 do stuff when it's the appropriate keycodes 9 for up/down-arrow (38, 40), to keep a reference 8 to which node (item in your div) you move 7 the focus to.
Then call the same handler 6 when you hit enter (keyCode 13) as you do 5 onclick.
It's hard to give a coding-example 4 because it highly depend on context, but 3 a tip on how to navigate through your div 2 is to make us of .nextSibling and .previousSibling, aswell 1 as .firstChild and .childNodes.
Long time since I did this, but I guess 6 you can use event.keyCode
.
If the values returned are 5 38 and 40, then the user has pressed the 4 up and down arrows respectively.
You then 3 have to select the row above or below your 2 current position. How to select the row 1 would depend on your particular situation.
More Related questions
We use cookies to improve the performance of the site. By staying on our site, you agree to the terms of use of cookies.