Ответ 1
Вы можете отвязать событие keydown
от дескриптора, чтобы сделать то, что вы хотите, например:
$("#slider").slider(); //create slider
$("#slider .ui-slider-handle").unbind('keydown'); //disable keyboard actions
в jQuery-UI Клавиши со сдвигом ползунка перемещают ручку ползунка (после того, как ручка была выбрана/нажата), что приятно, но я не хочу, чтобы ползунок обрабатывал клавиатуру (я использую клавиши со стрелками на странице для другого purpouse).
Любые идеи о том, как отключить события клавиатуры для слайдера jquery-ui?
Вы можете отвязать событие keydown
от дескриптора, чтобы сделать то, что вы хотите, например:
$("#slider").slider(); //create slider
$("#slider .ui-slider-handle").unbind('keydown'); //disable keyboard actions
Вы также можете автоматизировать описанное выше решение:
$.prototype.slider_old = $.prototype.slider;
$.prototype.slider = function()
{
var result = $.prototype.slider_old.apply(this, arguments);
this.find(".ui-slider-handle").unbind("keydown"); // disable keyboard actions
return result;
}
Просто запустите этот код, прежде чем делать вызовы $(...). slider(), и он должен автоматически удалить событие keydown сразу после запуска слайдера.
Я бы рекомендовал использовать обратный вызов слайдера create
, чтобы отменить keydown
следующим образом:
$( "#slider" ).slider({
create: function() {
disableKeydown();
}
});
function disableKeydown() {
$(".ui-slider-handle").unbind('keydown');
}
В зависимости от контекста, в котором выполняется первый ответ, нет гарантии, что функция unbind
будет вызвана после инициализации слайдера. Второй ответ помогает решить эту проблему, но я думаю, что придерживаться документации API, предоставляемой пользовательским интерфейсом jquery, делает этот подход более дружественным, что приводит к меньшей двусмысленности кода.