2010-05-27 7 views
12

dans jQuery-UI Les touches fléchées du curseur déplacent la poignée du curseur (après que la poignée a été sélectionnée/cliquée), ce qui est sympa, mais je ne veux pas que le curseur gère le clavier (j'utilise les touches fléchées).Curseur jQuery-UI - comment désactiver la saisie au clavier?

Des idées pour désactiver les événements clavier pour le curseur jquery-ui?

Répondre

22

Vous pouvez délie l'événement keydown de la poignée pour faire ce que vous voulez, comme ceci:

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

You can see a demo here

+0

+1 J'ai cherché partout. – jdborg

+0

Comment relier l'événement? – Xyroid

1

Vous pouvez également automatiser la solution ci-dessus comme ceci:

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

Il suffit d'avoir ce code exécuté avant de faire les appels "$ (...). Slider()", et il devrait supprimer l'événement de clavier pour chacun automatiquement, ri ght après l'initialisation du curseur.

0

Je vous recommande d'utiliser de délier keydown rappel create du curseur comme ceci:

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

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

En fonction du contexte dans lequel la première réponse est exécutée, il n'y a aucune garantie que la fonction unbind sera appelée après le curseur est initialisé. La deuxième réponse permet de résoudre ce problème, mais je pense que l'adhésion à la documentation de l'API fournie par l'interface utilisateur de jquery rend cette approche plus conviviale, ce qui entraîne moins d'ambiguïté de code.

Questions connexes