2008-12-30 23 views
27

¿Alguien sabe cómo deshabilitar un validador de ASP.NET usando JavaScript? Estoy usando JavaScript style.display = 'none' para deshabilitar partes de una página web. Sin embargo, estas partes deshabilitadas tienen validadores de asp.net que todavía están activados y necesito desactivarlos luego sin hacer un viaje de ida y vuelta al servidor. Gracias.Deshabilitar los validadores de ASP.NET con JavaScript

Respuesta

46

Usar este fragmento:

function doSomething() 
{ 
    var myVal = document.getElementById('myValidatorClientID'); 
    ValidatorEnable(myVal, false); 
} 
+0

El cara a cara: esto no funcionará para ASP.NET 1.1 con Firefox http: // stackoverflow.com/questions/3640183/disable-asp-net-1-1-validator-using-javascript-not-working-in-firefox – IrishChieftain

+13

Otro problema es que el validador aún está habilitado en el servidor, lo que puede darte una sorpresa al lado postback. – JumpingJezza

+6

Esto activa la validación del lado del cliente. En el fragmento, en lugar de ValidatorEnable, use: myVal.enabled = false; para deshabilitar el validador – GlennG

1

Además, en lugar de simplemente elementos escondidos se podía establecer la propiedad visible en false ...

whateverItem.Visible = false;

Esto hace que el tema simplemente no presta a la página, que creo que deshabilita la validación. Alguien por favor corrígeme si estoy equivocado.

+3

Tiene la razón de que no se procesa en la página, pero eso requiere una devolución de datos mientras que Javascript no lo hace. –

+0

no funciona. Incluso si los controles están ocultos, el validador conectado intenta validarlo –

1

Esta es una vieja pregunta, pero sorprendió a la siguiente respuesta no dada. He implementado usando las observaciones anteriores y funciona perfectamente

# enable validation 
document.getElementById('<%=mytextbox.ClientID%>').enabled = true 

#disable validation 
document.getElementById('<%=mytextbox.ClientID%>').enabled = disable 

Esta aplicación puede ser difícil porque alguien recordar si hay un error en javascript, el código será salir pero no conseguirá ningún error. Algunos puntos votos

  1. Asegúrese de que se puede establecer un punto de quiebre y puede solo paso a través del código. Si no, reinicia el navegador.

  2. Establezca el punto de interrupción al inicio de la función donde coloca este código. Examine el código, si hay un error, el código se cerrará y no podrá ingresar al código.

  3. En Firefox Firebug, puede escribir la declaración completa de javascript en la pestaña de la consola para ver lo que devuelve su declaración. Lo más importante es que desee verificar valores no nulos de controles.

0
comentario

por Glenn G anterior, yo usaría

myVal.enabled = false; 

desactivar el validador en lugar de

ValidatorEnable(myVal, false); 

Esto es lo que he experimentado: Ambos fragmentos funcionaban bien en mi servidor 2003 con .net framework 2.0. Sin embargo, en el servidor 2008 R2 con .NET Framework 4.0 (no estoy seguro de cuál es la causa del problema), estaba obteniendo un comportamiento involuntario con "ValidatorEnable". Hay pestañas (controles de usuario) en mi página y cuando salía de la pestaña que llamaba "ValidatorEnable", estaba deshabilitando temporalmente los validadores en la siguiente pestaña (incluso aunque no se llamara al código para deshabilitarlos) hasta la próxima devolución de datos.

0

La mejor manera de hacerlo así,

function doSomething() 
{ 
    var objvalidator = document.getElementById('myValidatorClientID'); 
    objvalidator.enabled = false; 
    objvalidator.isvalid = true; 
    ValidatorUpdateDisplay(objvalidator); 
} 
Cuestiones relacionadas