it-swarm.com.de

Deaktivieren Sie ASP.NET-Validatoren mit JavaScript

Weiß jemand, wie ein ASP.NET-Validator mit JavaScript deaktiviert wird? Ich verwende JavaScript style.display = 'none', um Teile einer Webseite zu deaktivieren. Diese deaktivierten Teile haben jedoch asp.net-Validatoren, die immer noch ausgelöst werden, und ich muss sie dann deaktivieren, ohne einen Umweg zum Server zu unternehmen. Vielen Dank.

31
Peanut

Verwenden Sie dieses Snippet:

function doSomething()
{
  var myVal = document.getElementById('myValidatorClientID');
  ValidatorEnable(myVal, false); 
}
51
Andreas Grech

Per Glenn G's Kommentar würde ich verwenden 

myVal.enabled = false; 

den Validator anstelle von deaktivieren 

ValidatorEnable(myVal, false); 

Folgendes habe ich erlebt: Beide Snippets funktionierten gut auf meinem Server 2003 mit .net Framework 2.0. Auf Server 2008 R2 mit .net Framework 4.0 (ich bin mir nicht sicher, was das Problem verursacht) wurde ich mit "ValidatorEnable" unbeabsichtigt verhalten. Es gibt Registerkarten (Benutzersteuerelemente) auf meiner Seite. Wenn ich die Registerkarte, die "ValidatorEnable" aufrief, nicht mehr verwendete, wurden die Validatoren auf der nächsten Registerkarte vorübergehend deaktiviert (obwohl der Code nicht zum Deaktivieren aufgerufen wurde), bis das nächste Postback ausgeführt wurde.

1
Tony L.

Dies ist eine alte Frage, aber die folgende Antwort überrascht nicht. Ich habe es mit den obigen Kommentaren implementiert und funktioniert einwandfrei 

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

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

Diese Implementierung kann eine schwierige Aufgabe sein, denn wenn Sie einen Fehler in Javascript feststellen, wird der Code beendet, Sie erhalten jedoch keine Fehler. Einige hilfreiche Punkte

  1. Stellen Sie sicher, dass Sie einen Haltepunkt und setzen können, um den Code schrittweise zu durchlaufen. Wenn nicht, starten Sie den Browser neu.

  2. Stellen Sie den Haltepunkt am Anfang der Funktion ein, an der Sie diesen Code eingeben. Durchlaufen Sie den Code. Wenn ein Fehler auftritt, wird der Code beendet und Sie können nicht in den Code einsteigen.

  3. In Firefox Firebug können Sie die gesamte Javascript-Anweisung auf der Registerkarte "Konsole" eingeben, um zu sehen, was Ihre Anweisung zurückgibt. Am wichtigsten ist jedoch, dass Sie nach Steuerelementen suchen, die nicht null sind. 

1
Hammad Khan

Statt Elemente einfach auszublenden, können Sie die Visible-Eigenschaft auf false setzen. 

whateverItem.Visible = false;

Dadurch wird das Element einfach nicht für die Seite gerendert, was meiner Meinung nach die Validierung deaktiviert. Bitte korrigieren Sie mich, wenn ich mich irre.

1
Mike Fielden

Hier ist ein ausführlicher Artikel zum Steuern von ASP.NET-Validatoren über JavaScript:

So steuern Sie die clientseitige Validierung von ASP.NET Validator-Steuerelementen über JavaScript

0
Roboblob

Der beste Weg, dies zu tun,

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