Я хочу иметь возможность использовать список ul в качестве элемента выбранной формы для определения стиля.
Я могу заполнить скрытый ввод моим кодом (не включенным в этот jsfiddle), и до сих пор так хорошо. Но теперь я пытаюсь позволить моей ul вести себя как вход выбора при нажатии клавиатуры, или мышь.
В моем предыдущем вопросе у меня были некоторые проблемы с клавиатурным управлением. Теперь они исправлены. Смотрите: Автопрокрутка на клавиатуре стрелка вверх/вниз
Остается проблема в том, что мышь не игнорируется при нажатии кнопок клавиатуры. Это приводит к тому, что "эффект зависания" сначала прослушивает ввод с клавиатуры, но не сразу переходит к мыши и выбирает этот элемент li как выбранный.
Это можно увидеть в моем примере jsfiddle: http://jsfiddle.net/JVDXT/3/
Мой код javascript:
// scrollTo plugin
$.fn.scrollTo = function( target, options, callback ){
if(typeof options == 'function' && arguments.length == 2){ callback = options; options = target; }
var settings = $.extend({
scrollTarget : target,
offsetTop : 100,
duration : 0,
easing : 'linear'
}, options);
return this.each(function(){
var scrollPane = $(this);
var scrollTarget = (typeof settings.scrollTarget == "number") ? settings.scrollTarget : $(settings.scrollTarget);
var scrollY = (typeof scrollTarget == "number") ? scrollTarget : scrollTarget.offset().top + scrollPane.scrollTop() - parseInt(settings.offsetTop);
scrollPane.animate({scrollTop : scrollY }, parseInt(settings.duration), settings.easing, function(){
if (typeof callback == 'function') { callback.call(this); }
});
});
}
//My code
//The function that is listing the the mouse
jQuery(".btn-group .dropdown-menu li").mouseover(function() {
console.log('mousie')
jQuery(".btn-group .dropdown-menu li").removeClass('selected');
jQuery(this).addClass('selected');
})
//What to do when the keyboard is pressed
jQuery(".btn-group").keydown(function(e) {
if (e.keyCode == 38) { // up
console.log('keyup pressed');
var selected = jQuery('.selected');
jQuery(".btn-group .dropdown-menu li").removeClass('selected');
if (selected.prev().length == 0) {
selected.siblings().last().addClass('selected');
} else {
selected.prev().addClass('selected');
jQuery('.btn-group .dropdown-menu').scrollTo('.selected');
}
}
if (e.keyCode == 40) { // down
console.log('keydown');
var selected = jQuery('.selected');
jQuery(".btn-group .dropdown-menu li").removeClass('selected');
if (selected.next().length == 0) {
selected.siblings().first().addClass('selected');
} else {
selected.next().addClass('selected');
jQuery('.btn-group .dropdown-menu').scrollTo('.selected');
}
}
});
Так может ли кто-нибудь научить меня, как igonore мыши при нажатии кнопок клавиатуры, но перечисление на мышь, когда пользователь коснулся ее снова. Как и поле формы ввода по умолчанию.
Update
Здесь новый jsfiddle.