2010-05-26 5 views
20

Wie setze ich eine asp.net Validierungskontrolle über JavaScript zurück? Das aktuelle Codebeispiel löscht den Fehlermeldungstext, setzt das Validierungssteuerelement für die nächste Formularübertragung jedoch nicht zurück.Setzen Sie eine asp.net Validierungskontrolle über Javascript zurück?

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

Update:

Hier ist das vollständige Codebeispiel des Formulars. Ich kann nicht scheinen die Überprüfungs-Steuerelemente auf einer anderen Form Vorlage abfeuern zu bekommen:

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

Was meinst du mit Reset? – azamsharp

+0

@azamsharp - Ich möchte den Start des Validierungsprozesses von Anfang an ermöglichen. –

Antwort

-1

Hier Code ist alles Validatoren

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

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

    return false; 
} 

oder eine einzelne zurück:

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

Dies war nicht hilfreich. –

+0

oops sorry miss lies dein Ziel – Glennular

+0

Es verbirgt die Validierungssteuerelemente, aber wenn ich eine andere Formularübermittlung versuche, löst es die Validierungssteuerelemente nicht erneut aus. –

38

Seite Validierung jedes Mal ausgelöst wird, wenn Sie einen Beitrag machen, scheint das Problem zu sein, dass Sie den Validator Inhalt cv.innerHTML = ''; löschen, auf diese Weise Ihre Validator Nachricht für immer verloren ist und Sie werden Think Validierung wird nicht erneut ausgelöst.

und für @Glennular Antwort, wird der Code nicht der Validator Display Eigentum behandeln, wenn sein Satz Dynamic wird der Validator umgeschaltet werden validator.style.display verwenden, aber wenn ihr Set zu None oder Inline dann validator.style.visibility Eigenschaft stattdessen verwendet werden.

Es ist besser asp.net zu verwenden ValidatorUpdateDisplay stattdessen

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

aktualisieren: Reset Validation Zusammenfassungen

<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

Diese Javascript Funktion funktioniert super !!! –

+0

Hallo @MK .. Ihre Funktion funktioniert großartig .. Es setzt alle Validatoren wie ich wollte zurück, aber es die Validierungszusammenfassung nicht zurückgesetzt. Haben Sie einen Code, der diesen Job erledigen könnte? Danke vielmals. Ich brauche es dringend. – lawphotog

+0

@LaurenceNyein Ich aktualisierte die Antwort, um eine Rücksetz-Validierungs-Zusammenfassungs-Methode einzuschließen. –

0

das folgende Stück Code Versuchen:

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

I hoffe, das wird funktionieren, wie es funktioniert hat r ich. :)

13

Dieser setzt alle Validatoren in allen Validierungsgruppen zurück.

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

perfekt, genau das, was ich brauchte – setebos

+2

Wenn Sie dies verwenden, stellen Sie sicher, dass Sie eine 'ValidationGroup' für alle Validatoren definiert haben ... sonst löst es Validatoren ohne eine Gruppe aus. Wenn Sie wirklich faul sind und keine Validierungsgruppe für jedes Element definieren möchten, könnten Sie eine zufällige Zeichenfolge erstellen, die nicht als Validierungsgruppe verwendet wird: 'PageClientValidate ('reset-all'); ' –

+0

Leere Zeichenfolge würde alle Validatoren auslösen. – kerem

-3

Mit der Page_Validators[i].style.visibility = 'hidden'; Sie nicht für mich arbeiten, so verwende ich diese Zeile Code statt: 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; 
    } 
Verwandte Themen