2010-05-26 4 views
20

Come si ripristina un controllo di convalida di asp.net tramite JavaScript? L'esempio di codice corrente cancella il testo del messaggio di errore ma non ripristina il controllo di convalida per l'invio del modulo successivo.Reimposta un controllo di convalida asp.net tramite javascript?

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

Aggiornamento:

Ecco l'esempio di codice completo del modulo. Io non riesco a ottenere i controlli di convalida fuoco fuori su un altro modulo di presentazione:

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

Che cosa si intende per reset? – azamsharp

+0

@azamsharp - Intendo attivare la procedura di convalida dall'inizio. –

risposta

-1

Ecco il codice per ripristinare tutte le validatori

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

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

    return false; 
} 

o uno solo:

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

Non è stato utile. –

+0

oops mi dispiace mancare di leggere il tuo obiettivo – Glennular

+0

Nasconde i controlli di convalida, ma quando provo un altro invio di modulo, non spegne nuovamente i controlli di convalida. –

38

Pagina convalida viene licenziato ogni volta che fai un post, quello che sembra essere il problema è che stai cancellando il contenuto del validatore cv.innerHTML = '';, in questo modo il tuo messaggio di validatore è perso per sempre e tu pensare che la convalida non stia sparando di nuovo.

e per risposta @Glennular, il codice non gestisce la proprietà validatore Display, se impostato al Dynamic validatore verrà attivata o disattivata tramite validator.style.display, ma se la sua serie di None o Inline allora validator.style.visibility proprietà sarà utilizzato al posto.

è più opportuno utilizzare asp.net ValidatorUpdateDisplay invece,

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

Aggiornamento: Reset di convalida Sintesi

<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

Questa funzione javascript funziona alla grande !!! –

+0

Ciao @MK .. la tua funzione funziona benissimo. Reimposta tutti i validatori come volevo ma non resetta il riepilogo della convalida. Avete qualche codice che potrebbe fare quel lavoro? Molte grazie. Ne ho disperatamente bisogno. – lawphotog

+0

@LaurenceNyein Ho aggiornato la risposta per includere un metodo di riepilogo di convalida della reimpostazione. –

0

provare il seguente pezzo di codice:

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

I spero che funzionerà come ha funzionato sono io :)

13

Questo ripristina tutti i validatori in tutti i gruppi di convalida.

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

perfetto, esattamente ciò di cui avevo bisogno – setebos

+2

Se si utilizza questo, assicurarsi di avere un 'ValidationGroup' definito per tutti i validatori ... altrimenti attiverà i validatori senza un gruppo. Se sei veramente pigro e non vuoi definire un gruppo di validazione per ogni elemento, potresti creare una stringa casuale che non sarà usata come un gruppo di validazione in questo modo: 'Page_ClientValidate ('reset-all'); ' –

+0

La stringa vuota attiverà tutti i validatori. – kerem

-3

Utilizzando la Page_Validators[i].style.visibility = 'hidden'; non funzionano per me così io uso questa riga di codice, invece: 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; 
    }