2010-05-26 27 views
20

¿Cómo reinicio un control de validación asp.net a través de JavaScript? El ejemplo del código actual borra el texto del mensaje de error, pero no reinicia el control de validación para el siguiente envío del formulario.Restablecer un control de validación asp.net a través de javascript?

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

Actualización:

Aquí está el ejemplo de código completo de la forma. Me parece que no puede obtener los controles de validación disparan en otra forma de presentación:

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

¿Qué quiere decir con reset? – azamsharp

+0

@azamsharp: me refiero a permitir el inicio del proceso de validación desde el principio. –

Respuesta

-1

Aquí es código para restablecer todos los validadores

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

Esto no fue útil. –

+0

Vaya, lo siento, señorita, lea su objetivo – Glennular

+0

Oculta los controles de validación, pero cuando intento enviar otro formulario, no vuelve a activar los controles de validación. –

38

página de validación se activa cada vez que realiza una publicación, lo que parece ser el problema es que está borrando el contenido del validador cv.innerHTML = '';, de esta manera su mensaje de validador se pierde para siempre y usted Creo que la validación no está disparando nuevamente.

y la respuesta @Glennular, el código no se ocupa de la propiedad validador Display, si su conjunto a Dynamic el validador se modifica utilizando validator.style.display, pero si su conjunto a None o Inline continuación validator.style.visibility propiedad se utiliza en su lugar.

que es mejor usar asp.net ValidatorUpdateDisplay lugar,

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

actualización: restablecer validación Resúmenes

<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

¡Esta función de JavaScript funciona genial! –

+0

Hola @MK ... tu función funciona muy bien ... Restablece todos los validadores como yo quería, pero no restablece el resumen de validación. ¿Tiene algún código que pueda hacer ese trabajo? Muchas gracias. Lo estoy necesitando desesperadamente. – lawphotog

+0

@LaurenceNyein Actualicé la respuesta para incluir un método de restauración de resúmenes de validación. –

0

intente lo siguiente trozo de código:

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

I Espero que esto funcione, ya que funcionó soy yo :)

13

Éste restablece todos los validadores en todos los grupos de validación.

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

perfecto, exactamente lo que necesitaba – setebos

+2

Si usa esto, asegúrese de tener un 'ValidationGroup' definido para todos los validadores ... de lo contrario activará validadores sin un grupo. Si eres realmente flojo y no quieres definir un grupo de validación para cada elemento, podrías crear una cadena aleatoria que no se usará como un grupo de validación como ese: 'Page_ClientValidate ('reset-all'); ' –

+0

La cadena vacía activará todos los validadores. – kerem

-3

Utilizando el Page_Validators[i].style.visibility = 'hidden'; No trabaje para mí, así que uso esta línea de código en su lugar: 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; 
    } 
Cuestiones relacionadas