Jquery validation des messages d'erreur ne sont pas cacher, pourquoi
Je suis à l'aide de jquery validation et jquery discrète validation des plugins. Je suis en train d'essayer de masquer le message d'erreur, mais le message d'erreur ne sont pas cacher. J'ai créé un js fiddle:
Voici le code que j'ai utilisé dans le violon:
Html
<form id="form">
Name:
<input data-val="true" data-val-length="The field First Name must be a string with a minimum length of 3 and a maximum length of 15." data-val-length-max="15" data-val-length-min="3" name="FirstName" type="text" />
<span class="field-validation-valid help-block" data-valmsg-for="FirstName" data-valmsg-replace="true"></span>
</form>
<button id="hide">Hide</button>
Cacher
JS
$("#hide").click(function(){
$("#form").data("validator").hideErrors();
});
Ce que je suis en manque ici et pourquoi hideErrors() la fonction ne sont pas de travail ??
Modifier
Je ne sais pas pourquoi vous les gars ne sont pas en gardant jquery discrète de validation à l'esprit tout en donnant des réponses. Presque toutes les réponses sont juste en se concentrant sur la façon de masquer les messages d'erreur sans se soucier de la fonctionnalité existante qui pourrait être casser si on se contente de masquer le message. - Je déjà dit que je veux la réponse de
Pourquoi hideErrors fonction() de jquery objet validateur n'est pas de travail ?
J'ai également créé un la plus simple possible violon qui témoignent de mon problème, cochez cette.
hideErrors()
est appelé dans la resetForm
)
OriginalL'auteur user1740381 | 2014-02-24
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez masquer les messages d'erreur de validation, que vous devez utiliser resetForm fonction au lieu de hideErrors fonction. Comme d'autres mentionnés dans leurs réponses, resetForm interne appelle hideErrors fonction.
Mais voici le twist arrive, quand vous essayez de l'utiliser resetForm fonction, il ne fonctionnera pas à cause de la façon jquery.valider.discrète plugin fonctionne.
jquery.valider.discrète plugin remplacer la errorClass et errorElement propriété de jquery.valider plugin.
De jquery.valider.discrète plugin Ligne de code-109
Ainsi, lorsque vous appelez resetForm fonction de sur le programme de validation de l'objet, jquery.valider plugin ne peut pas trouver d'erreur étiquettes pour supprimer les message d'erreur de validation ne seront pas les supprimer.
Maintenant, vous avez deux options pour supprimer les messages d'erreur:
Option - 1
Vous pouvez modifier jquery.valider.discrète plugin code et remplacer errorClass et errorElement valeurs avec les valeurs suivantes:
Ce sont les valeurs par défaut, qui jquery.valider plugin.
Option - 2
Vous pouvez écrire votre propre code qui fera l'affaire et, par ce moyen, vous n'avez pas à modifier le code du plugin. Voici le code que vous pouvez utiliser avec de petites modifications mentionnées ci-dessous:
Essayer de mieux comprendre comment il fonctionne. Pourquoi devez-vous "truc discret à penser que les éléments ont été validés" en opposition à la suppression de l'erreur des éléments du DOM? J'ai essayé $("myform").supprimer(".terrain à une erreur de validation") et d'une certaine façon les messages d'erreur restent.
OriginalL'auteur Gaurav
Vous pouvez utiliser
$(".help-block").toggle();
ou$(".help-block").hide();
pour résoudre ce problème.http://jsbin.com/leyacefi/10/edit?html,js,sortie
J'ai fait une solution de contournement. Vérifier si les adapter à vos besoins:
http://jsbin.com/leyacefi/11/
Pour répondre à votre question:
La fonction
hideErrors
appellethis.addWrapper( this.toHide ).hide();
de sorte qu'il s'exécute en premier la fonctionaddWrapper
qui renvoie le contexte et après c'est l'appel de lahide
fonction. La fonctionhide
appelle lashowHide
fonction et de la paramets estelements
.elements.length
sera de 0 et, par conséquent, il n'atteindra jamais jusqu'à laelem.style.display = show ? values[ index ] || "" : "none";
où le CSS. Ainsi, la propriété ne changera jamais.Vous devez être clair et placez-la dans votre question. Au moment où vous demandez comment faire pour les cacher et c'est ce que je vous ai montré 🙂
OriginalL'auteur GuyT
Je vous recommande de lire la documentation avant d'utiliser un plugin.
Si vous voyez le validateur plugin de la documentation, il est clairement mentionné que
La méthode .hideErrors() n'est pas répertoriée dans la documentation. Donc, selon la documentation, vous ne devriez pas l'utiliser.
Mais en javascript(vous pouvez dire jquery) nombreux sont possibles. Donc, même si ils ne vous permettent de l'appeler sur un objet jquery, vous pouvez l'appeler sur les DOM .
Simplement l'utiliser comme ça.
Son travail dans ma région, pouvez-vous vérifier dans votre local..?
Je ne sais pas quoi faire de vous des moyens en locaux, mais vérifiez ce violon jsbin.com/leyacefi/12/edit , votre solution ne fonctionne pas
Les moyens locaux: copier et coller le code dans un fichier bloc-notes et enregistrer en tant que .html et en l'exécutant à partir du navigateur. Et votre exigence, vous ne voulez pas les messages d'erreur à afficher sur l'entrée de moins de 3 caractères ou plus de 15 caractères, ai-je raison? Si tel est votre besoin, vous pouvez l'essayer dans votre local, avec et sans [0]
OriginalL'auteur venugopal
Votre code devrait ressembler à ceci:
OriginalL'auteur Adel