2013-04-11 6 views
2

Je suis un novice de jQuery mais j'ai pu utiliser quelques scripts que j'ai trouvés pour obtenir les résultats que je veux, avec une exception. La page sur laquelle je travaille a 4 menus déroulants qui permettent à l'utilisateur de faire une sélection à partir de chaque menu, puis cliquez sur un bouton de soumission qui renvoie les résultats d'une liste.afficher "aucun résultat trouvé" après la recherche

Actuellement si vous faites quelques sélections et rien si trouvé, vous obtenez seulement une page blanche. Je dois afficher "Aucun résultat trouvé". Quelques scripts que j'ai vus ici m'obligeraient à réécrire ce que j'ai, mais je pense qu'il existe une solution simple. Sinon, c'est de retour au clavier pour moi.

Voici le code sur jsFiddle: http://jsfiddle.net/LbUfe/

est le script ici que je utilise pour faire les sélections.

<script type="text/javascript">  
     $(document).ready(function() 
     {    
      $("#btnFilter").click(function() 
      { 
       var portfolio = $("#portfolio").val(); 
       var strategy = $("#strategy").val(); 
       var geoFocus = $("#geoFocus").val(); 
       var spendType = $("#spendType").val(); 
       var portfolioSelector = ''; 
       var strategySelector = '';  
       var geoFocusSelector = ''; 
       var spendTypeSelector = ''; 

       if (portfolio == "all" && strategy == "all" && geoFocus == "all" && spendType == "all")      
       { 
        //show all items in list - working 
        $(".item").show(); 
       } 

       else 
       { 
        if (strategy != "all") 
        { 
         strategySelector = '.' + strategy 
        } 

        if (portfolio != "all") 
        { 
         portfolioSelector = '.' + portfolio 
        } 
        if (geoFocus != "all") 
        { 
         geoFocusSelector = '.' + geoFocus 
        } 
        if (spendType != "all") 
        { 
         spendTypeSelector = '.' + spendType 
        } 
        $(".item").hide(); 
        $(strategySelector + portfolioSelector + geoFocusSelector + spendTypeSelector).show(); 
        } 

      }); 

     }); 

Voici la page de travail (moins le "Aucun résultat trouvé").

http://staging.humanityunited.org/

Un exemple rapide: sélectionnez le menu 'Bangladesh' dans le menu 'Mise au point géographique de, et 'parrainage' pour 'Type de dépenses' et cliquez sur soumettre. Vous obtiendrez une page blanche.

+0

Je mis à jour ma réponse avec le code de travail et votre violon mis à jour avec ma solution. –

Répondre

0

Vous pouvez ajouter un contrôle pour voir combien de l'élément de liste sont visibles.

var visibleElements = $('#colRight li:visible').length; 

http://jsfiddle.net/LbUfe/5/

+0

Merci beaucoup, thealexbaron. Ceci est exactement ce que je cherchais. –

+0

Pas de problème! Ne pas oublier d'accepter l'un de ceux-ci comme la réponse à votre question. – thealexbaron

2

Comme je peux le voir dans votre HTML, tous les résultats possibles ont un .item de classe. Par conséquent, si aucun élément n'est affiché, cela signifie qu'il est temps d'imprimer le message "aucun résultat trouvé". Vous pouvez y parvenir en jQuery:

if($('li.item:visible').length===0)) // no item visible 
{ 
    // put code here to display your message 
} 
+0

Merci pour le bon conseil, Freeman. Toi et thealexbaron m'ont fait gagner beaucoup de temps. –

+0

Mon assurance Chris –

0

Essayez de changer

$(strategySelector + portfolioSelector + geoFocusSelector + spendTypeSelector).show(); 

à

var $res = $(strategySelector + "," + portfolioSelector + "," + geoFocusSelector + "," + spendTypeSelector).show(); 
if ($res.length == 0) { 
    $res.html("No results found"); 
} 

$res.show(); 

(Updated fiddle)

Il semble que votre problème est que vous nous re ajout de tous ces sélecteurs pour que seules les choses avec TOUS ces sélecteurs soient affichées. Ergo, j'ai ajouté des comas entre les sélecteurs.

+0

Merci, Zachary. Je vais certainement essayer ça. –

+0

Pas de soucis :) Faites-moi savoir si vous avez des difficultés/questions. –

0

Je pense que cela vaut mieux

var ItemsCount=$(strategySelector + portfolioSelector + geoFocusSelector + spendTypeSelector).show().length; 
if(ItemsCount= 0) 
{ 
    //show your message 
} 
+0

Le problème est qu'il ajoute tous ces sélecteurs afin que seules les choses avec tous ces sélecteurs seront affichés - c'est un bug. –

Questions connexes