2010-05-27 5 views
12

in jQuery-UI Slider-Pfeiltasten bewegen den Schieberegler (nachdem der Ziehpunkt ausgewählt/angeklickt wurde), was schön ist, aber ich möchte nicht, dass der Schieberegler die Tastatur bedient (ich benutze die Pfeiltasten auf der Seite für eine andere Aufgabe)).jQuery-UI Slider - wie Tastatureingabe zu deaktivieren?

Irgendwelche Ideen, um Tastaturereignisse für jquery-ui Schieberegler zu deaktivieren?

Antwort

22

können Sie lösen das keydown Ereignis aus dem Griff zu tun, was Sie wollen, wie folgt aus:

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

You can see a demo here

+0

+1 Haben überall nach diesem gesucht. – jdborg

+0

Wie man das Ereignis neu bindet? – Xyroid

1

Sie können auch die oben genannte Lösung wie so automatisieren:

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

Lassen Sie diesen Code einfach laufen, bevor Sie die Aufrufe von "$ (...). Slider()" ausführen, und das Keydown-Ereignis für jeden automatisch entfernen, ri ght nach der Schieberegler-Initialisierung.

0

Ich würde empfehlen, den create Rückruf des Slider mit keydown zu lösen, wie so:

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

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

auf dem Kontext, in dem je die ersten Antwort ausgeführt wird, gibt es keine Garantie gibt, dass die unbind Funktion nach einem heißen wird Slider wird initialisiert. Die zweite Antwort hilft dabei, dies zu lösen, aber ich denke, dass die Einhaltung der von jquery UI bereitgestellten API-Dokumentation dies zu einem benutzerfreundlicheren Ansatz macht, der zu weniger Codedeutigkeit führt.