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.

Réponses:


146

Cette méthode semble faire ce que vous voulez:

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

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.


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 ...


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');

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


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)*/
}

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É


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.