Améliorer mon filtre jQuery

Par Florian.C, il y a 8 ans


Bonjour,

J'aimerai faire en sorte de trier mes containers en fonction de 4 select.

Pour cela, dès qu'il y a un changement dans l'un des selects j'utilise .filter.

Je sais retourner un article si 1, 2, 3 et 4 est bien sélectionné pas avec seulement 1 ou 2 ou 3 select.

Le problème vient de cette ligne :

return data_region == region_select && data_categories == categorie_select && data_etablissement == etablissement_select && data_date == date_select; $('#filtre1 select').each(function(){ $(this).change(function(){ var region_select = $('#filtre_region option:selected').val(); var categorie_select = $('#filtre_categorie option:selected').val(); var etablissement_select = $('#filtre_etablissement option:selected').val(); var date_select = $('#filtre_date input').val(); if( region_select == "" && categorie_select == "" && etablissement_select == "" && date_select == "" ){ $('.container').css("display", "block"); } else { $('.container').css("display", "none").filter(function(){ var data_region = $(this).data("region"); var data_categories = $(this).data("categorie"); var data_etablissement = $(this).data("etablissement"); var data_date = $(this).data("date"); return data_region == region_select && data_categories == categorie_select && data_etablissement == etablissement_select && data_date == date_select; }).css("display", "block"); } });

Une aide serait la bienvenu.... Merci !

3 réponses

Florian.C, il y a 8 ans

Il me faudrait un truc du genre je crois, "Si un élément est vide alors je ne le met pas dans ma condition". Mais je bloque ...

etorion, il y a 8 ans

Bonjour,

Tu peux essayer ça,

var result = (region_select == "" ? true : (data_region == region_select)) && (categorie_select == "" ? true : (data_categories == categorie_select)) && (etablissement_select == "" ? true : data_etablissement == etablissement_select) && (date_select == "" ? true : data_date == date_select);

Et du coup plus besoin du "if else"

Florian.C, il y a 8 ans

J'étais parti pour faire du cas par cas là ahah, tu me sauve la vie !

On peut donc faire comme ça ! Okok bon et bien et immense merci :D