2010-05-26 6 views
20

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 soumission de formulaire suivante.Réinitialiser un contrôle de validation asp.net via javascript?

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

Mise à jour:

Voici l'échantillon complet de code du formulaire. Je ne peux pas sembler obtenir les contrôles de validation incendie au large 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> 
+0

Que voulez-vous dire par remise à zéro? – azamsharp

+0

@azamsharp - Je veux dire commencer le processus de validation depuis le début. –

Répondre

-1

Voici le code pour réinitialiser tous les validateurs

function CleanForm() { 
    document.forms[0].reset(); 

    for (i = 0; i < Page_Validators.length; i++) { 
     Page_Validators[i].style.visibility = 'hidden'; 
    } 

    return false; 
} 

ou d'un seul:

document.getElementById("<%= MyValidationContorl.ClientID %>").style.visibility 
= 'hidden'; 
+0

Cela n'a pas été utile. –

+0

oups sorry miss lire votre objectif – Glennular

+0

Il cache les contrôles de validation, mais lorsque j'essaie une autre soumission de formulaire, il ne déclenche plus les contrôles de validation. –

38

page validation est déclenché chaque fois que vous faites un post, ce qui semble être le problème est que vous effacez le contenu du validateur cv.innerHTML = '';, de cette façon votre message de validation est perdu pour toujours et vous aurez pense que la validation ne se déclenche plus.

et réponse @Glennular, le code ne gère pas le validateur Display propriété, si son ensemble à Dynamic le validateur sera basculée en utilisant validator.style.display, mais si son jeu à None ou Inline alors validator.style.visibility propriété sera utilisé à la place.

Son préférable d'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: Remise à zéro de validation Résumés

<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> 
+0

Cette fonction javascript fonctionne très bien !!! –

+0

Salut @MK .. votre fonction fonctionne très bien .. Elle réinitialise tous les validateurs comme je le voulais mais elle ne réinitialise pas le résumé de validation. Avez-vous un code qui pourrait faire ce travail? Merci beaucoup. J'en ai désespérément besoin. – lawphotog

+0

@LaurenceNyein J'ai mis à jour la réponse pour inclure une méthode de résumés de validation de réinitialisation. –

0

Essayez le morceau de code suivant:

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

I espérons que cela fonctionnera car il a travaillé pour R moi. :)

13

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

<script type="text/javascript"> 
    Page_ClientValidate(''); 
</script> 
+3

parfait, exactement ce dont j'avais besoin – setebos

+2

Si vous utilisez ceci, assurez-vous d'avoir un 'ValidationGroup' défini pour tous les valideurs ... sinon il déclenchera des validateurs sans groupe. Si vous êtes vraiment paresseux et que vous ne voulez pas définir un groupe de validation pour chaque élément, vous pouvez créer une chaîne aléatoire qui ne sera pas utilisée comme un groupe de validation comme ceci: 'Page_ClientValidate ('reset-all'); ' –

+0

Une chaîne vide déclencherait tous les validateurs. – kerem

-3

Utilisation du Page_Validators[i].style.visibility = 'hidden'; Ne pas travailler pour moi donc j'utiliser cette ligne de code à la place: Page_Validators[i].enabled = false;

if (sFirstName == "" && sLastName == "") 
    { 

     alert('Reminder: Please first enter student ID to search for the student information before filling out the rest of the form field values'); 
     //Disable all require field validation coontrol on the form so the user could continue to use the Lookup student function. 
     document.forms[0].reset(); 
     for (i = 0; i < Page_Validators.length; i++) { 
      //Page_Validators[i].style.visibility = 'hidden'; 
      Page_Validators[i].enabled = false; 
     } 
     return false; 
    } 
    else 
    { 
     alert('Student Name = ' + sFirstName + ' ' + sLastName); 
     document.forms[0].reset(); 

     for (i = 0; i < Page_Validators.length; i++) { 
      //Page_Validators[i].style.visibility = 'hidden'; 
      Page_Validators[i].enabled = true; 
     } 
     return true; 
    }