web-dev-qa-db-fra.com

Réinitialiser un contrôle de validation asp.net via javascript?

Comment réinitialiser un contrôle de validation asp.net via JavaScript? L'exemple de code actuel efface le texte du message d'erreur mais ne réinitialise pas le contrôle de validation pour la prochaine soumission du formulaire.

var cv= document.getElementById("<%= MyValidationContorl.ClientID %>");
cv.innerHTML = '';

Mettre à jour:

Voici l'échantillon de code complet du formulaire. Je n'arrive pas à obtenir le contrôle de validation sur une autre soumission de formulaire:

function ClearData() {
    var cv = document.getElementById("<%= MyValidationContorl.ClientID %>");
    cv.innerHTML = '';
}

<html>
   <form>
       <asp:TextBox id="MyTextControl" runat="server" />
       <asp:CustomValidator ID="MyValidationContorl" runat="server" />
       <input type="button" onclick="javascript:ClearCCData(); return false;" runat="server" />
   </form>
</html>
20
Michael Kniskern

La validation de page est déclenchée chaque fois que vous publiez un message. Le problème semble être que vous effacez le contenu du validateur cv.innerHTML = '';. De cette manière, votre message du validateur est perdu pour toujours et vous penserez que la validation ne se déclenche plus.

et pour @Glennular answer, le code ne gère pas la propriété validator Display; si sa valeur est Dynamic, le validateur sera basculé à l'aide de validator.style.display, mais s'il est défini sur None ou Inline, la propriété validator.style.visibility sera utilisée.

Il vaut mieux utiliser asp.net ValidatorUpdateDisplay à la place,

<script type="text/javascript">
    function Page_ClientValidateReset() {
        if (typeof (Page_Validators) != "undefined") {
            for (var i = 0; i < Page_Validators.length; i++) {
                var validator = Page_Validators[i]; 
                validator.isvalid = true;
                ValidatorUpdateDisplay(validator);
            }
        }
    }
</script>

Mise à jour : Réinitialiser les résumés de validation

<script type="text/javascript">
function Page_ValidationSummariesReset(){
    if (typeof(Page_ValidationSummaries) == "undefined")
            return;
    for (var i = 0; i < Page_ValidationSummaries.length; i++)
            Page_ValidationSummaries[i].style.display = "none";

}
</script>
38
MK.

Celui-ci réinitialise tous les validateurs de tous les groupes de validation.

<script type="text/javascript">
    Page_ClientValidate('');
</script>
13
kerem

Essayez le morceau de code suivant:

$("#<%= txtUserSettingsEmailRequiredValidator.ClientID %>").css("display", "none");

J'espère que cela fonctionnera comme cela a fonctionné pour moi. :)

0
Shararti