2008-12-30 11 views
27

Kann jemand einen ASP.NET-Validator mit JavaScript deaktivieren? Ich verwende JavaScript style.display = 'none', um Teile einer Webseite zu deaktivieren. Allerdings haben diese deaktivierten Teile asp.net Validatoren, die immer noch feuern und ich muss dann deaktivieren, ohne eine Rundreise zum Server zu machen. Danke.Deaktivieren von ASP.NET-Validatoren mit JavaScript

Antwort

46

Mit diesem Code-Schnipsel:

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

Heads-up: das wird nicht für ASP.NET 1.1 mit Firefox http arbeiten: // Stackoverflow.com/questions/3640183/disable-asp-net-1-1-validator-using-javascript-nicht-Working-in-firefox – IrishChieftain

+13

Ein weiteres Problem ist, dass der Validator Server-Seite noch aktiviert ist, die Ihnen als nächstes eine Überraschung geben kann Postback. – JumpingJezza

+6

Dies löst die clientseitige Validierung aus. Verwenden Sie im Snippet anstelle von ValidatorEnable: myVal.enabled = false; Deaktivieren Sie den Validator – GlennG

1

Zusätzlich anstatt einfach versteckt Elemente Sie die Visible-Eigenschaft auf false gesetzt könnte ...

whateverItem.Visible = false;

Dies dass Artikel einfach nicht machen macht die Seite, von der ich glaube, dass sie die Validierung deaktiviert. Jemand korrigiert mich bitte, wenn ich falsch liege.

+3

Sie sind korrekt, dass es nicht auf der Seite rendern, aber das erfordert ein Postback, während Javascript nicht funktioniert. –

+0

funktioniert nicht. Auch wenn die Steuerelemente ausgeblendet sind, versucht ein Validator, es zu validieren –

1

Dies ist eine alte Frage, aber die folgende Antwort nicht gegeben überrascht. Ich setzte es von den Kommentaren mit oben und funktioniert einwandfrei

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

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

Diese Implementierung jemand kann tückisch sein, weil erinnern, wenn ein Fehler in Javascript ist, wird der Code verlassen, aber Sie werden nicht alle Fehler erhalten. Einige hilfreiche Punkte

  1. Achten Sie darauf, einen Haltepunkt und kann einzigen Schritt durch den Code einstellen. Wenn nicht, Browser neu starten.

  2. Legen Sie den Haltepunkt am Anfang der Funktion fest, an die Sie diesen Code setzen. Durchlaufen Sie den Code, wenn ein Fehler auftritt, wird der Code beendet und Sie können nicht mehr in den Code einsteigen.

  3. In Firefox Firebug können Sie die gesamte Javascript-Anweisung in der Konsole Registerkarte eingeben, um zu sehen, was Ihre Aussage zurückgibt. Am wichtigsten ist, dass Sie nach Nicht-Null-Werten von Steuerelementen suchen möchten.

0

Per Glenn G Kommentar oben, würde ich

myVal.enabled = false; 

verwenden den Validator statt

ValidatorEnable(myVal, false); 

hier zu deaktivieren ist, was ich erlebt: Beide Schnipsel mit auf meinem 2003-Server fein gearbeitet .net Rahmen 2.0. Auf Server 2008 R2 mit .net Framework 4.0 (ich bin mir nicht sicher, was das Problem verursacht), habe ich unbeabsichtigtes Verhalten mit "ValidatorEnable" bekommen. Auf meiner Seite gibt es Registerkarten (usercontrols), und wenn ich die Registerkarte verlassen würde, die "ValidatorEnable" aufruft, werden die Validatoren auf der nächsten Registerkarte vorübergehend deaktiviert (obwohl Code nicht aufgerufen wurde, um sie zu deaktivieren) bis zum nächsten Postback.

0

Der beste Weg, wie dies zu tun,

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