2010-12-28 4 views
4

Ich weiß, dass die integrierten ASP.Net-Validatoren mit einem clientseitigen Framework kommen, aber ich konnte nichts finden, das mich einen einzelnen Validator für seinen gültigen Status überprüfen lässt.Überprüfen Sie das Ergebnis von ASP.Net Validator clientside

Ich erwarte, dass es auch möglich sein sein, so dass ich hoffe, jemand hier weiß, wie es zu tun :-)

Der Validator in Frage ist ein RegularExpressionValidator, die ich, ob eine E-Mail-Adresse verwenden, um zu bestimmen, gültig oder nicht.

Hier einige kurze Code:

<script> 
function CheckForExistingEmail() 
{ 
    Page_ClientValidate(); // Ensure client validation 
    if (revEmail.IsValid) // pseudo code! 
    { 
    // Perform server side lookup in DB for whether the e-mail exists. 
    } 
} 
</script> 

<asp:TextBox runat="server" id="tbEmail" onblur="CheckForExistingEmail();" /> 
<asp:RegularExpressionValidator id="revEmail" runat="server" ControlToValidate="tbEmail" ErrorMessage="Not a valid e-mail address" ValidationExpression="([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})" /> 
+0

Ihr Code sollte gut funktionieren, wenn Sie die clientId des regularexpressionvalidator nehmen und IsValid wie Sie überprüfen. – Pabuc

+0

Ich bin mir nicht sicher, ob ich Ihnen folge, ich habe es versucht: <% = revEmail.ClientID%>. IsValid und document.getElementById ('<% = revEmail.ClientID%>'). IsValid. Beide sind undefined :-( – Steffen

Antwort

6

ich jetzt um es selbst einen Weg gefunden:

Durch eine Validation zum Validator hinzugefügt, kann ich Page_ClientValidate (Validation) verwenden - die einen Bool Wert zurückgibt .

Ich bin mir nicht sicher, ob es die gleiche Sache war man Pabuç gemeint, wenn es bitte eine Antwort und ich werde natürlich wählen, dass als richtig :-)

Hier ist der Code fallen ist, die funktioniert:

<script> 
function CheckForExistingEmail() 
{ 
    if(Page_ClientValidate("email")) 
    { 
    // Perform server side lookup in DB for whether the e-mail exists. 
    } 
} 
</script> 

<asp:TextBox runat="server" id="tbEmail" onblur="CheckForExistingEmail();" /> 
<asp:RegularExpressionValidator id="revEmail" runat="server" ValidationGroup="email" ControlToValidate="tbEmail" ErrorMessage="Not a valid e-mail address" ValidationExpression="([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})" /> 
+0

Ich bezweifle, dass Sie auf isValid Eigenschaft zugreifen können, wie Sie in Ihrer ursprünglichen Frage haben. Wenn Sie einzelnen Validator auf der Seite haben, dann gab es keine Notwendigkeit für Validationgroup, die Sie getan haben könnten - if (PageClientValidate()) { // Führen Sie eine serverseitige Suche in der DB durch, ob die E-Mail existiert } – gbs

+0

@gbs: Sie haben Recht mit dem einzelnen Validator Fall - aber ich habe mehrere Validatoren auf der Seite, ich habe es einfach für die Frage :-) – Steffen

1

Sie an der Sichtbarkeit der Validator Nachricht aussehen kann (wir haben in der Regel einen roten Asterisk *)

if (document.getElementById("ctl00_ContentPlaceHolder1_revClientSite").style.visibility == "hidden") { 
    // validator says go ahead 
} else { 
    alert("please fix the indicated field - it is not valid"); 
} 

.style.visibility wird "versteckt" oder "sichtbar"

Verwandte Themen