2010-05-27 20 views
12

en jQuery-UI Las teclas de flecha del control deslizante mueven el control deslizante (después de seleccionar/hacer clic en el control), lo que es bueno, pero no quiero que el control deslizante maneje el teclado (utilizo las teclas de flecha en la página para otro propósito))Control deslizante jQuery-UI: cómo desactivar la entrada del teclado?

¿Alguna idea de cómo deshabilitar los eventos del teclado para el control deslizante jquery-ui?

Respuesta

22

Usted puede desenlazar el caso keydown del mango para hacer lo que quiere, como esto:

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

You can see a demo here

+0

+1 estado buscando en todas partes esto. – jdborg

+0

¿Cómo volver a enlazar el evento? – Xyroid

1

También puede automatizar la solución anterior, así:

$.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; 
} 

Simplemente haga que este código se ejecute en algún momento antes de realizar las llamadas "$ (...). Slider()", y debe eliminar automáticamente el evento de selección de teclas para cada uno, ri ght después de la inicialización del control deslizante.

0

me gustaría recomendar el uso create devolución de llamada del control deslizante para desenlazar keydown así:

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

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

Dependiendo del contexto en el que se ejecuta la primera respuesta, no hay garantía de que la función unbind se llamará después de una el control deslizante se inicializa La segunda respuesta ayuda a resolver esto, pero creo que al adherirnos a la documentación de la API provista por jquery UI hacemos que este sea un enfoque más amigable para los desarrolladores que da como resultado una menor ambigüedad en el código.

Cuestiones relacionadas