2009-01-27 8 views
3

J'utilise le jQuery Validation plugin et j'ai une zone de texte avec la classe digits pour le forcer à être des chiffres seulement, mais pas obligatoire. Lorsque j'appelle valider sur le formulaire cela fonctionne bien, mais si j'appelle valid() dans la zone de texte quand il est vide, il renvoie 0, malgré aucun message d'erreur indiquant et requis n'étant pas défini.La méthode jQuery Validation `valid()` renvoie 0 lorsque requis n'est pas vrai

Est-ce que quelqu'un sait pourquoi il retournerait ceci pour une valeur d'entrée apparemment valide?

Voici le code:

<input type="text" value="" name="kiloMetresTravelled" id="kiloMetresTravelled" class="digits"/> 

et le script

<script type="text/javascript'> 
var isvalid = jQuery('#kiloMetresTravelled').valid(); 
//isvalid == 0 when kiloMetresTravelled is blank 
</script> 
+0

Whoops, lisez la mauvaise question. :) –

Répondre

7

Vérifiez cela, du documentation:

Makes "champ" nécessaire et chiffres seulement.

Vous pouvez faire quelque chose comme ceci:

var isValid = jQuery('#kiloMetresTravelled').valid() || jQuery('#kiloMetresTravelled').val() == ""; 
+1

Ne dit-il pas que 'fait que l'élément n'exige que des chiffres'. Ils ont également ajouté une règle 'required'. –

+0

L'exemple ajoute la règle requise dans le mélange: cette réponse est trompeuse. Ce qui se passe réellement, c'est que puisqu'il n'y a pas de règle requise sur le champ, la méthode interne 'check' renvoie undefined pour le champ en question. Pourquoi c'est ainsi est un mystère pour moi. Notez que le code ci-dessus fonctionne mais (a) la raison est fausse, et (b) cela ne fonctionnera que pour un seul élément testé. –

2

Je pense que cela fonctionne:

var e="#whatever"; 
var isValid = $(e).valid() || $(e).val()== "" && !$(e).hasClass('required'); 
0

Il y a un bug sur la bibliothèque lorsque les méthodes de règle vérifient les champs facultatifs avec « this.optional (élément)". Lorsque le champ est vide this.optional renvoie "dependency-mismatch" et la méthode de validation renvoie "undefined" marquant le champ comme invalide.

explication complète ici:

https://github.com/jzaefferer/jquery-validation/issues/481

Questions connexes