Bootstrap Curseur de la valeur de changement de gestionnaire

J'utilise Bootstrap Slider, et je me demandais s'il y avait un moyen d'inclure un gestionnaire pour un changement de valeur. Je vois que la documentation inclut des handlers pour slideStart, slide et slideStop, mais aucun Pour "change" (de valeur).

il est possible qu'ils puissent faire glisser le curseur autour et (au moment de la libération) finir sur la même valeur, auquel cas je ne voudrais pas que l'événement se déclenche. Seulement s'ils la glissent à une nouvelle valeur.

j'ai essayé:

$('#sliderAdminType').slider({
    formater: function(value) {
        // my formater stuff that works
        },
    change: function(event, ui) {
        console.log("has changed");
        }       
    });

et

$('#sliderAdminType').change(function() {
    console.log("has changed");
});

et

$('#sliderAdminType').slider().change(function() {
    console.log("has changed");
});

et

$('body').on('change', '#sliderAdminType', function(e){
    console.log("has changed");
});
16
demandé sur Lys777 2014-02-19 05:20:37

4 réponses

Vous pouvez effectuer les étapes suivantes:

1) utiliser slideStart événement pour obtenir la valeur d'origine de votre curseur

2) Utiliser slideStop événement pour obtenir la nouvelle valeur de votre curseur

3) comparez ces deux valeurs, si elles sont différentes, puis lancez votre code

var originalVal;

$('.span2').slider().on('slideStart', function(ev){
    originalVal = $('.span2').data('slider').getValue();
});

$('.span2').slider().on('slideStop', function(ev){
    var newVal = $('.span2').data('slider').getValue();
    if(originalVal != newVal) {
        alert('Value Changed!');
    }
});

Violon Démo

28
répondu Felix 2014-02-19 02:05:13

la réponse acceptée n'est pas valide pour portée: true curseur

Voici double-vérification du curseur:https://jsfiddle.net/oayj5Lhb/

Pour double curseur: événement "change" renvoie à la fois newValue et oldValue objets. Gardez à l'esprit que le "changement", de "slideStart', 'slideStop' événements sont déclenchés sur le mouvement de la souris (quand j'ai demandé pourquoi, la réponse a été "c'est la bonne façon de mise en œuvre", pour moi, il semble un peu étrange). Voici un exemple:

$('#your-slider').slider().on('change', function(event) {
    var a = event.value.newValue;
    var b = event.value.oldValue;

    var changed = !($.inArray(a[0], b) !== -1 && 
                    $.inArray(a[1], b) !== -1 && 
                    $.inArray(b[0], a) !== -1 && 
                    $.inArray(b[1], a) !== -1 && 
                    a.length === b.length);

    if(changed ) {
        //your logic should be here
    }
});

remarque: [2, 1] et [1, 2] sont considérés comme égaux parce que la paire de glissières peut être interchangeable.

6
répondu Anton Lyhin 2016-01-21 21:40:04

essayez ceci si la fonction n'a pas fonctionné pour vous, comme moi

$('#yourSlider').bind("slideStop", function (e)

3
répondu TomerMahari 2016-09-08 14:06:36

au lieu de changer l'événement il suffit d'utiliser la diapositive. Le promoteur ne fonctionne pas bien, donc dans la Diapositive, vous pouvez définir la valeur à nouveau.

        var thresholdSlider = $('#Threshold');
        thresholdSlider.slider({
            formater: function (value) {
                return 'Current value: ' + value;
            }
        });

        thresholdSlider.slider().on('slide', function (ev) {
            thresholdSlider.slider('setValue', ev.value);
        });
1
répondu Mirak 2014-07-11 00:41:55