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


etorion
Réponse acceptée

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"

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 ...

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