jQuery Validate Plugin - Déclenche la validation d'un seul champ

89

J'ai un formulaire qui peut éventuellement être pré-rempli via Facebook Connect. Une fois qu'un utilisateur se connecte, son nom et son adresse e-mail sont automatiquement renseignés. Le problème est que cela ne déclenche pas la validation à distance pour vérifier si l'e-mail existe déjà.

Est-il possible que je puisse appeler la validation sur ce seul champ? Quelque chose comme:

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

serait une idée. J'ai cherché dans les documents sans succès.

Ryan
la source

Réponses:

146

Cette méthode semble faire ce que vous voulez:

$('#email-field-only').valid();
Grégoire
la source
4
Remarque: le nom de l'élément de formulaire fonctionne également avec cette fonction, c'est-à-dire $('input[name=email-field-only]').valid();fonctionne également
Raptor
1
quel est le problème? lorsque j'utilise cette méthode, ma validation est interrompue
nakajuice
2
Cette solution valide l'ensemble du formulaire, affichant les messages d'erreur pour tous les champs.
Pablo
@haemhweg, vous n'avez peut-être pas appelé la méthode .validate () avant d'essayer d'utiliser le .valid () ? La documentation: jqueryvalidation.org/valid
userfuser
1
L'API a changé, utilisez la réponse fournie par Paul
Anima-t3d
23

Utilisez Validator.element():

Valide un seul élément, renvoie true s'il est valide, false dans le cas contraire.

Voici l'exemple montré dans l'API:

var validator = $( "#myform" ).validate();
validator.element( "#myselect" );

.valid()valide l'ensemble du formulaire, comme d'autres l'ont souligné. L'API dit:

Vérifie si le formulaire sélectionné est valide ou si tous les éléments sélectionnés sont valides.

Paul
la source
20

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

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

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

Tracker1
la source
1
C'est ce qui a fonctionné pour moi, j'ai également ajouté .valid()à la fin donc il m'a cherché. $("#Form").data('validator').element('input[name=__Suburb]').valid(); Je crois que si vous ne le sélectionnez pas par ID, cela pourrait être nécessaire.
Mihai P.
2
Je ne pense pas .valid()appartenir à la fin de l'expression. La .element()fonction renvoie un résultat booléen ( docs | src ). Quand j'essaye d'appeler .valid () j'obtiens le message d'erreur: "Uncaught TypeError: $(...).data(...).element(...).validis not a function"
KyleMit
Avez-vous joint le validateur au formulaire? cela fait quelques années que j'utilise la validation JQuery ... Donc l'API pour cela peut avoir changé. À l'époque, j'ai dû travailler sur des internes pour trouver ce qui précède. Il n'a pas été publié dans la documentation, donc la structure peut bien avoir changé depuis ma dernière recherche.
Tracker1
16
$("#FormId").validate().element('#FieldId');
aslanpayi
la source
2
Je préfère cette méthode, c'est un joli 1 liner. Fonctionne très bien, merci.
Andy
1
C'est la réponse parfaite sans aucune erreur avec un type de retour valide
Kaushik Thanki
7

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> 

- croisé avec cette question similaire

ShaneBlake
la source
7

Si vous souhaitez valider un champ de formulaire individuel, mais que vous ne voulez pas que l'interface utilisateur soit déclenchée et affiche des erreurs de validation, vous pouvez envisager d'utiliser la méthode Validator.check () qui retourne si le champ donné passe la validation ou non.

Voici un exemple

var validator = $("#form").data('validator');
if(validator.check('#element')){
    /*field is valid*/
}else{
    /*field is not valid (but no errors will be displayed)*/
}
Dmitry Komin
la source
0

au cas où vous voudriez faire la validation de "certains éléments" (pas tous les éléments) sur votre formulaire. Vous pouvez utiliser cette méthode:

$('input[name="element-one"], input[name="element-two"], input[name="element-three"]').valid();

J'espère que cela aidera tout le monde :)

ÉDITÉ

Peps
la source
-6
$("#element").validate().valid()
John
la source