Comment faire pour utiliser jQuery, à distance, de valider un champ qui dépend d'un autre champ dans le formulaire?
J'ai un formulaire dans lequel je suis à l'aide de validation à distance pour vérifier si une adresse e-mail existe déjà dans la base de données. Cependant, le hic, c'est que sur ce formulaire, l'utilisateur peut choisir entre plusieurs "groupes", et chaque groupe a son propre ensemble d'adresses e-mail (donc le même e-mail peut exister une fois dans chaque groupe).
La sélection de groupe est une liste déroulante sur la forme, et l'adresse e-mail est un champ de saisie avec de validation à distance. J'ai quelques questions. Tout d'abord, j'ai mis en place ma télécommande de la règle comme ceci:
remote: {
url: 'remote_script.php',
data: { group_id: $('select.group_id').val() }
}
Toutefois, cela semble statiquement définir le group_id paramètre à ce que la première valeur du select. Sens, si je change le sélectionner, puis de déclencher la validation à distance à nouveau, le group_id paramètre ne change pas
Tout d'abord, comment puis-je faire de ce paramètre dynamique, en fonction de la valeur d'un select dans le formulaire?
Deuxièmement, comment puis-je déclencher manuellement la validation à distance sur le champ adresse e-mail? Lorsque le group_id select est changé, je veux re-déclencher la validation à distance sur le champ adresse e-mail (sans changer la valeur du champ). J'ai essayé d'utiliser
$(selector).validate().element('.email_addr')
Mais il semble que ce déclencheur de la norme de validation (obligatoire, e-mail), et non pas l'appel distant.
- appréciez le modifier, mais je pense que la deuxième partie du titre est en fait la partie la plus difficile à comprendre! Je pense à des fins de recherche ayant une référence dans le titre, ce serait plus utile. Rétrospectivement, j'aurais fait deux questions, mais c'était il y a cinq ans...
Vous devez vous connecter pour publier un commentaire.
Trouvé la solution à la deuxième partie de ma question:
va supprimer le cache de la demande à distance, et permettent à la demande à distance pour être déclenché de nouveau, à l'aide de .element().
Donc mon code est comme suit:
Solution a été trouvée ici: solution
La première partie de ma question a été répondue à l'origine par @Jeffery À
Tout ce qui doit être fait est de changer la valeur du paramètre à une fonction, plutôt que de juste valeur. Jeffery exemple est copié ci-dessous pour les futurs googlers:
'validator
sélecteur de venir? voir ma question dans le commentaire ci-dessus.removeData
méthode a sauvé ma vie !De la deuxième exemple à distance, il ressemble à fonctions (évaluée au cours de validation) peut être utilisé pour les données, de sorte
devrait fonctionner.
Pour votre deuxième question, avez-vous essayer de passer les règles de validation de
validate()
?async: false
dans la télécommande options dans l'ordre pour que cela fonctionne pour moi.