Ajout manuel d' & supprimer les erreurs de validation de jQuery validateur
J'ai un formulaire de recherche & knock-out en fonction de la grille de résultats. Lorsque la recherche est effectuée, il y a quelques validation côté serveur, en prenant place sur asp.net mvc, et si le modèle de l'état n'est pas valide, il est de retour de la liste d'erreurs de modèle via JSON.
J'ai jQuery de validation déjà configuré, par défaut et les validations (regex, nécessaires, etc) sont automatiquement mappés à l'aide de jquery.unobtrusive
plugin.
J'ai trouvé $.validate().showErrors({prop:error})
comme un moyen dynamique d'afficher les erreurs de réponse json à partir du serveur, mais je pense que ce n'est pas la bonne façon de l'utiliser pour l'affichage du serveur de messages de validation, que le champ ne peut pas être réinitialisé par la suite (input-validation-error
class
n'est pas supprimé).
J'ai besoin d'une méthode de travail pour la mise & réinitialisation des erreurs sur le client, s'il en existe un dans $.validate
.
Il est l'exemple à mon problème sur jsFiddle: http://jsfiddle.net/goranobradovic/ughCm/
À le reproduire, cliquez sur ajouter une erreur, puis éliminer l'erreur, l'entrée reste rouge.
C'est parce que showErrors fonction ne pas ajouter de règles qui sont déclenchées par la validation, de sorte que le champ reste "valide" et il n'est pas dans elements()
liste qui est utilisée dans resetForm
pour supprimer input-validation-error
class
de champs non valides.
Fondamentalement, je veux moyen simple d'ajouter/supprimer une règle de validation avec message personnalisé qui n'est jamais satisfait sur le client, afin d'éviter la soumission d'un formulaire lorsque j'ai mis en erreur manuellement et d'avoir à enlever invalid
class
après la suppression de message d'erreur.
- Une belle et de la plus simple solution peut être trouvée ici: stackoverflow.com/questions/7380278/...
- merci, a l'air beaucoup plus simple que ce que j'ai fait... à mauvais que je ne pouvais pas trouver cela à la fois...
- Double Possible de définir Manuellement discrète erreur de validation sur une zone de texte
Vous devez vous connecter pour publier un commentaire.
J'ai résolu ce problème en remplaçant showErrors fonction jQuery dans le programme de validation avec le mien, qui est compatible avec discrète généré par la validation des travées, et le nettoyage des champs valides qui ont de classe non valide. Il n'est pas très belle solution de contournement, mais il fonctionne.
Ici est jsfiddle avec solution: http://jsfiddle.net/goranobradovic/ughCm/5/
Mise à JOUR: Comme lien vers site externe n'est pas la bonne réponse selon les lignes directrices, je vais ajouter l'exemple de code ici. Pour tous ceux qui ont déjà familier avec jQuery validation, il suffit de regarder deux lignes de code dans showErrors fonction. J'ai attribué à validateur avec validateur.les paramètres.showErrors = showErrors;.
HTML:
JavaScript:
validator.showErrors({ "old_password": response.message})
est ce que je cherchais.J'ai fait quelque chose d'un peu plus simple - en gros ajout de la possibilité de mieux enregistrer l'erreur dans le programme de validation. J'ai ajouté ce qui suit à jquery.validate.js (sous showErrors):
alors au lieu d'appeler la forme.validate().showErrors (), vous pouvez le faire par exemple
Enfin, parce que la forme peut ne pas avoir été marqué comme non valide lors de la soumission, vous voudrez peut-être forcer une validation sur keyup ou similaires:
(Note: ce n'est pas de bataille testé, mais je suis sûr qu'au moins une solution se trouve en bas de ce chemin, quelque part)
J'ai fini par résoudre le problème de façon simple nettoyage des erreurs et de montrer de nouvelles erreurs.