97 votes

jQuery Validate Plugin - Déclencher la validation d'un champ unique

J'ai un formulaire qui peut optionnellement être pré-rempli via facebook connect. Lorsqu'un utilisateur se connecte, son nom et son email sont automatiquement remplis. Le problème est que cela ne déclenche pas la validation à distance pour vérifier si l'email existe déjà.

Existe-t-il un moyen d'appeler la validation sur ce seul champ ? Quelque chose comme :

$('#email-field-only').validate()

serait une idée. J'ai cherché dans la documentation sans succès.

152voto

Gregoire Points 1675

Cette méthode semble faire ce que vous voulez :

$('#email-field-only').valid();

4 votes

Remarque : le nom de l'élément de formulaire fonctionne également avec cette fonction, c'est-à-dire que le nom de l'élément de formulaire peut être utilisé. $('input[name=email-field-only]').valid(); fonctionne également

1 votes

Quel est le problème ? Lorsque j'utilise cette méthode, la validation est interrompue.

2 votes

Cette solution permet de valider l'ensemble du formulaire, en affichant les messages d'erreur pour tous les champs.

20voto

Tracker1 Points 6573

Pour une raison quelconque, certaines des autres méthodes ne fonctionnent pas tant que le champ n'a pas été focalisé/blindé/modifié, ou qu'une soumission n'a pas été tentée... ceci fonctionne pour moi.

$("#formid").data('validator').element('#element').valid();

J'ai dû fouiller dans le jquery.validate script pour le trouver...

1 votes

C'est ce qui a fonctionné pour moi, j'ai aussi ajouté .valid() à la fin pour que ça me ressemble $("#Form").data('validator').element('input[name=__Suburb]')‌​.valid(); Je pense que si vous ne le sélectionnez pas par ID, cela pourrait être nécessaire.

4 votes

Je ne pense pas que .valid() appartiennent à la fin de l'expression. Le site .element() La fonction renvoie un résultat booléen ( docs | src ). Lorsque j'essaie d'appeler .valid(), je reçois le message d'erreur : "Erreur de type non rencontrée : $(...).data(...).element(...).valid n'est pas une fonction"

0 votes

Avez-vous attaché le validateur au formulaire ? Cela fait quelques années que je n'ai pas utilisé la validation JQuery... Donc l'API pour cela a peut-être changé. À l'époque, j'ai dû travailler à travers les internes pour trouver le ci-dessus il. Ce n'était pas publié dans la documentation, donc la structure peut avoir changé depuis la dernière fois que j'ai regardé.

7voto

ShaneBlake Points 4844

Lorsque vous configurez votre validation, vous devez enregistrer l'objet validateur. Vous pouvez l'utiliser pour valider des champs individuels.

<script type="text/javascript">
var _validator;
$(function () {    
     _validator = $("#form").validate();   
});

function doSomething() {    
     _validator.element($('#someElement'));
}
</script> 

-- cross posted with cette question similaire

1voto

Francisco Soto Points 5043

Validation à distance ? Si cette fonction est déjà implémentée et qu'elle fonctionne par le biais d'événements dans votre formulaire, vous pouvez essayer de déclencher ces événements. Par exemple :

$('#email-field-only').change();

Ce qui déclenchera l'événement onchange, généralement utilisé par les validateurs.

-7voto

John Points 1
$("#element").validate().valid()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X