I am creating a custom auto suggest-box I need to move on li
items on arrow down press.
so I added tabindex attribute to li it is getting focus. but problem is that it scrolling the div up with some random height that it out the selected li from div.
after arrow down key:
and after some arrow-down key press:
and after that it goes out of screen while mouse down behave perfectly.
Here I made a Demo JSFiddle
first click item1
and then press arrow down it behaving same.
Elaborating on my comment
Set the container's scrollTop
to index of focused li
* li height
.
return false
upon keydown to prevent normal browser scrolling of overflown parent.
$('div.container').on('focus', 'li', function() {
var $this = $(this);
$this.addClass('active').siblings().removeClass();
$this.closest('div.container').scrollTop($this.index() * $this.outerHeight());
}).on('keydown', 'li', function(e) {
var $this = $(this);
if (e.keyCode === 40) {
$this.next().focus();
return false;
} else if (e.keyCode === 38) {
$this.prev().focus();
return false;
}
}).find('li').first().focus();
jsfiddle http://jsfiddle.net/38zR3/42/
Have you tried using anchor instead of tabindex? e.g
<li><a href="#"></li>
In my experience some browsers cannot handle the focus on tabindex correctly
I had a problem like that once and solved it by setting the CSS style overflow
of the containing div to none
or hidden
depending on your preference.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With