Bonjour,

je suis actuellement en train de travailler sur un système de filtre avec MixItUp et un problème se pose.

j'utilise deux range, un pour les prix, un autre pour les surfaces, malheureusement seul le dernier utilisé est pris en compte. J'aimerai pouvoir combiner les deux.

Voila mon code:

$(".slider")
    .slider({
        max: 3000,
        range: true,
        values: [500, 1500],
        step: 50,
        orientation: "horizontal"
    })
    .slider('float', {
        prefix: prefixRs,
        suffix: "€"
    });

$(".slider").on("slidechange", function (event, ui) {
    var rangevalues = ui.values;
    var minValue = rangevalues[0];
    var maxValue = rangevalues[1];
    var filterValues = [];
    for (i = minValue; i <= maxValue; i += 5) {
        filterValues.push(".price-" + i);
    }

    //alert(filterValues.join(','));
    $('#Container').mixItUp('filter', filterValues.join(','));

});

// pour le slider des surfaces 

$(".slider_s")
.slider({
  max: 3000,
  range: true,
  values: [0, 1000],
  step: 50,
  orientation: "horizontal"
})
.slider('float', {
  prefix: prefixRs,
  suffix: "m²"
});

$(".slider_s").on("slidechange", function (event, ui) {
var rangevalues = ui.values;
var minValue = rangevalues[0];
var maxValue = rangevalues[1];
var filterValues = [];
for (i = minValue; i <= maxValue; i += 5) {
  filterValues.push(".surface-" + i);
}

Pourriez vous me mettre sur la trace de l'erreur ? Ou vers quelle autre structure me tourner ?

5 réponses


Salut !

Je pense que tu devrais identifier tes sliders avec des ID :

$('#slider1').slider( ... );
$('#slider2').slider( ... );

Je pense que ton problème vient du fait que tu récupère la valeur des input ayant la classe 'slider', et que donc seul le dernier élément du DOM ayant cette classe est assigné.

Un extrait du code HTML de tes sliders permettrait de mieux cibler le problème aussi !

Salut,

Quel plugin utilises-tu pour tes sliders ?

Bonjour.

Quel plugin utilises-tu pour tes sliders ?

À mon avis, il utilise le plugin Slider de jQuery UI.

*@Lartak c'est possible, mais dans le doute je préfère poser la question ^^
Sinon il nous faudrait soit un peu plus de code pour t'aider, et notamment le HTML, soit que tu nous fasses un petit codepen ;)

Hey ! Désolé j'étais en déplacement dans une région sans internet, quel idée !

Je vous fais un CodePen dans l'après-midi et je vous envoie le lien ! Merci à vous ! ;)