Ползунок jQuery-UI - как отключить ввод с клавиатуры? - PullRequest
12 голосов
/ 27 мая 2010

в jQuery-UI Ползунки со стрелками перемещают маркер ползунка (после того, как дескриптор был выбран / нажат), что приятно, но я не хочу, чтобы ползунок обрабатывал клавиатуру (я использую клавиши со стрелками на странице для другого purpouse).

Есть идеи, как отключить события клавиатуры для слайдера jquery-ui?

Ответы [ 3 ]

22 голосов
/ 27 мая 2010

Вы можете отсоединить событие keydown от дескриптора, чтобы сделать то, что вы хотите, например:

$("#slider").slider(); //create slider
$("#slider .ui-slider-handle").unbind('keydown'); //disable keyboard actions

Вы можете увидеть демо здесь

1 голос
/ 11 марта 2014

Вы также можете автоматизировать вышеуказанное решение следующим образом:

$.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 для каждого сразу после инициализации слайдера.

0 голосов
/ 09 мая 2015

Я бы рекомендовал использовать обратный вызов create ползунка для отмены привязки keydown, например, так:

$( "#slider" ).slider({
  create: function() {
    disableKeydown();
  }
});

function disableKeydown() {
  $(".ui-slider-handle").unbind('keydown');
}

В зависимости от контекста, в котором выполняется первый ответ, нет гарантии, что функция unbind будет вызвана после инициализации ползунка. Второй ответ помогает решить эту проблему, но я думаю, что следование документации API, предоставляемой jquery UI, делает этот подход более удобным для разработчиков, что приводит к меньшей неопределенности кода.

...