2010-05-27 11 views
12

in jQuery-UI I tasti di direzione del cursore spostano la maniglia del cursore (dopo che l'handle è stato selezionato/cliccato), che è bello, ma non voglio che lo slider gestisca la tastiera (uso i tasti freccia sulla pagina per un altro scopo).slider jQuery-UI - come disabilitare l'input da tastiera?

Qualche idea su come disabilitare gli eventi della tastiera per il cursore jquery-ui?

risposta

22

Si può associare l'evento keydown dal manico di fare ciò che si vuole, in questo modo:

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

You can see a demo here

+0

+1 State cercando dappertutto per questo. – jdborg

+0

Come riassociare l'evento? – Xyroid

1

È inoltre possibile automatizzare la soluzione di cui sopra in questo modo:

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

Basta che questo codice venga eseguito qualche volta prima di effettuare le chiamate "$ (...). Slider()", e dovrebbe rimuovere automaticamente l'evento keydown per ciascuno, ri inizializzazione del cursore dopo ght.

0

Mi consiglia di utilizzare create callback del cursore per svincolare keydown in questo modo:

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

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

A seconda del contesto in cui viene eseguita la prima risposta, non c'è alcuna garanzia che la funzione unbind sarà chiamato dopo un il cursore è inizializzato. La seconda risposta aiuta a risolverlo, ma ritengo che aderire alla documentazione dell'API fornita da jquery UI renda questo approccio più dev-friendly che si traduce in una minore ambiguità del codice.

Problemi correlati