2013-07-03 1 views
0

J'ai 4 même liste déroulante, l'utilisateur doit au moins sélectionner le premier. J'ai donc ajouté une validation pour le premier. Si la valeur de la première liste déroulante est 0, affichez un message d'erreur.La validation de la liste Drowdown ne montre pas d'erreur

HTML :(la première liste déroulante)

<select id="form22" class="select form22" name="m22"> 
<option selected="selected" value="0"> Choose....</option> 
<option value="1">Option 1</option> 
<option value="2">Option 2</option> 
<option value="3">Option 3</option> 
</select> 

jquery:

$.validator.addMethod("check_item_dropdown", function(value, element) { 
     return this.optional(element) || value == 0 ; 
     }, "Please select an item from the dropdown list."); 

$().ready(function() { 
    $("#response").validate({ 

    rules: { 
       form22:{ 
         check_item_dropdown: true 
         } 
      }, 

    messages: { 
       form22:{ 
         check_item_dropdown: " Please select an item." 
         } 
       } 

      }); 

    }); 

Je ne sais pas pourquoi il n'y a pas de message d'erreur si je choisi "Choisir ....". Ma logique est-elle correcte?

Répondre

1

Je pense qu'il ya deux problèmes ici. L'un est que form22 est facultatif à partir de l'apparence du code que vous avez posté. Pour corriger cela, ajoutez nécessaire: true dans la configuration de votre validateur comme ceci:

form22:{ 
    check_item_dropdown: true, 
    required:true 
} 

L'autre est que vous retournerez vrai de la méthode si la valeur est 0. Vous voulez qu'il ne soit pas 0, non? Donc, votre chèque doit être la valeur! == 0 == pas de valeur 0.

+0

Ca marche !!!!!! mais devrait être valeur! = 0: P – user2210819

+0

Cela fonctionnera aussi mais il est toujours préférable d'utiliser!==, il vérifie le type aussi bien que l'égalité. C'est une bonne habitude à prendre. De même, utilisez === au lieu de == –

0

Au lieu de l'attribut ID form22, utilisez l'attribut de nom m22 dans votre script de validation.

Espérons que cela fonctionnera pour vous.

Edité

<script type="text/javascript"> 
$.validator.addMethod("check_item_dropdown", function(value, element) { 
    if(value == 0 || value == '') { 
     return false; 
    } else { 
     return true; 
    } 
}, "Please select an item from the dropdown list."); 

$().ready(function() { 
    $("#response").validate({ 

     rules: { 
      m22:{ 
        check_item_dropdown: true 
        } 
     }, 

     messages: { 
      m22:{ 
        check_item_dropdown: " Please select an item." 
        } 
      } 

    }); 
}); 
</script> 

J'ai fait quelques changements dans votre validator method, état if pour l'enregistrement value est 0 ou blank. Et aussi définir l'attribut de nom dans la validation, j'ai également testé dans mon localhost.

Supprimez également selected="selected" de l'option.

Cela fonctionne maintenant. Essayez ceci et laissez-moi savoir si cela fonctionne pour vous.

+0

form22 est également une classe sur l'élément de sélection de sorte que le le validateur le ramassera. Cela ne devrait pas être le problème ici. Voir la documentation sur http://jqueryvalidation.org/rules/ "Il existe plusieurs façons de spécifier les règles de validation: Les méthodes de validation sans paramètres peuvent être spécifiées en tant que classes sur l'élément (recommandé) Les méthodes de validation avec paramètres peuvent être spécifiées comme: attributs (recommandé) Les deux peuvent être spécifiés comme métadonnées en utilisant le plugin métadonnées Les deux peuvent être spécifiés en utilisant l'option rules de la méthode validate() " –

+0

J'ai utilisé l'attribut de nom m22 mais ne fonctionne toujours pas – user2210819

+0

@ user2210819 Maintenant essayez mon code édité et laissez-moi savoir si des problèmes. –

0

Faites votre Choisissez l'option que comme ceci:

<option selected="selected" value=""> Choose....</option> 
+0

Comment cela va-t-il correspondre à la valeur == 0 dans la méthode check_item_dropdown? –

+0

Il n'est pas possible d'avoir une valeur 0? Pourquoi je dois changer cette option? – user2210819

0

votre addmethod problème quelque part ... essayer ce addmethod ...

$.validator.addMethod("check_item_dropdown",function(value, element, param) 
    { 
      var notDefault = true; 
      if(element.selectedIndex == 0) 
         notDefault =false; 
      return this.optional(element)|| notDefault; 
    }, "Please select an item from the dropdown list."); 

    $(document).ready(function() { 

     $("#response").validate({ 

     rules: { 
        m22:{ 
          check_item_dropdown: true 
         } 
       } 
     }); 

     }); 
Questions connexes