2009-07-01 8 views
5

J'ai un formulaire avec 4 listes déroulantes dessus. L'option sélectionnée par défaut dans toutes les listes déroulantes est "Veuillez sélectionner". Je veux utiliser Jquery pour m'assurer que toutes les listes déroulantes ont une valeur avant que la page soit soumise, mais mon code ne fonctionne que sur le premier. Est-ce que quelqu'un a un moyen que je peux vérifier toutes les listes déroulantes à la fois? Je suis sûr que je manque quelque chose mais je ne peux pas le comprendre. MerciSélectionner non sélectionné

+0

Je devine que puisque ce n'est pas une fonction qui ne fonctionne que sur la première sélection sur la page ????? –

+0

C'est parce que la commande .val() renvoie uniquement la valeur du premier élément de l'ensemble encapsulé (objet jQuery). Par conséquent besoin de vérifier la valeur de chaque élément dans le jeu enveloppé –

Répondre

8

function doconfirm() { 
    if ($('select').each(function() { 
    if($(this).val() == '') { 
     alert("Please Select All Fields"); 
     return(false); 
    } 
    }); 
} 
+1

est exactement ce dont vous avez besoin. http://docs.jquery.com/Core/each –

+2

Et assurez-vous que votre code HTML est correct - et retournera des choses différentes avec val(). Le premier est une chaîne vide, le second renvoie "S'il vous plaît sélectionner" – artlung

+1

Merci cela fait. –

0
$('select').each(function(s){if(!this.val())...}); 
4

Une légère variation sur l'approche de @mgroves, ce explicitement tests pour au moins une option sélectionnée, et des alertes sur la première select qui n'ont pas. S'il n'y a aucun avantage à cette approche, il est une meilleure lisibilité (d'autant plus que l'utilisation de .val() est quelque peu ambiguë à cet effet):

function doconfirm() { 
    if($('select').each(function() { 
    if(!$(this).find('option:selected').length) { 
     alert("Please Select All Fields"); 
     return(false); 
    } 
    }); 
} 
1

pour une opinion différente sur ce pourquoi ne pas utiliser

function doConfirm() { 

    var toReturn = true; 

    if ($('select').filter(function(){ 
      return $(this).val() === ''; 
     }).length) { 

     toReturn = false; 
     //notify user 

    } 

    return toReturn; 
} 
Questions connexes