Question

J'utilise le plug-in de validation jQuery et j'ai une zone de texte avec le class digits pour le forcer à n'être composé que de chiffres, mais pas obligatoire. Lorsque j'appelle valider sur le formulaire, cela fonctionne bien, mais si j'appelle valid() dans la zone de texte lorsqu'elle est vide, la valeur renvoyée est 0, bien qu'aucun message d'erreur ne s'affiche et indique que le paramètre n'est pas défini.

Quelqu'un sait-il pourquoi il renverrait ceci avec 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>
Était-ce utile?

La solution

Cochez cette option dans la documentation :

  

Crée le champ " " requis et chiffres   seulement.

Vous pouvez faire quelque chose comme ceci:

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

Autres conseils

Je pense que cela fonctionne:

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

Il y a un bogue dans la bibliothèque lorsque les méthodes de règles vérifient la présence de champs facultatifs avec & "this.optional (element) &"; Lorsque le champ est vide, this.optional renvoie & "; Dépendance-incompatibilité &"; et la méthode de validation retourne " undefined " marquer le champ comme invalide.

Explication complète ici:

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top