Language:

Checkbox mit CustomValidator am Client validieren

Language: Deutsch
Programming Language: JavaScript
Published by: Thomas
Last Update: 4/24/2006
Views: 1202

Description

Ich hab mich grad gefragt, wie man eine lauffähige JavaScript-Funktion zustande bekommt, mit der man einen CustomValidator auch am Client ausführen kann. Normalerweise benutze ich dafür allein die serverseitigen Funktionen, aber was tut man nicht alles für des Users Zufriedenheit ;-)

Nachfolgend ein kleines Beispiel, wie man eine Checkbox validieren kann. Das ist eigentlich immer dann nützlich, wenn man z.B. abfragen will, ob der User die Nutzungsbedingungen, AGB o.ä. akzeptiert. Anbei auch noch die Server-Methode.

Was gibt es zu beachten?

Drei Sachen:

1. Die Signatur der JavaScript-Funktion. Irgendwo in den Tiefen der automatisch generierten JavaScripts von ASP.NET wird die Funktion entsprechend aufgerufen. Will man das Ganze nun auch zum Laufen bringen, reicht es nicht einfach "false" oder "true" als Return-Value zu definieren, sondern es muss explizit args.IsValid entsprechend gesetzt werden. Da kommt man sich schnell ganz hilflos vor, so ohne IntelliSense und allem, wenn man das nicht weiß ;-).

2. Dem CustomControl darf die Eigenschaft "ControlToValidate" nicht gegeben werden! Grund hierfür ist die Weigerung des ASP.NET-Teams CheckBox-Controls validierbar zu machen ... warum und wieso habe ich aufgehört zu verfolgen, es ist für mich sowieso nicht nachvollziehbar. Die nachfolgende serverseitige Methode wird beim Page.Validate() trotzdem aufgerufen. Man muss sich halt das entsprechende Control selbst auswählen und kann nicht bequem über .Value validieren, aber egal.

3. Daraus folgt natürlich auch, dass uns auch der Wert der Checkbox in der JavaScript-Funktion nicht zur Verfügung steht. Also gilt auch hier: selbst ist der Entwickler/die Entwicklerin.

Hier noch die serverseitige Validierungs-Methode:

protected void ValTerms_OnServerValidate(object sender, ServerValidateEventArgs e)
{
e.IsValid = Terms.Checked;
}

Code

1 <script language="javascript" type="text/javascript"> 2 <!-- 3 function ValidateTerms(src, args) 4 { 5 if(document.getElementById("<%= Terms.ClientID %>").checked) 6 args.IsValid = true; 7 else 8 args.IsValid = false; 9 } 10 --> 11 </script> 12 <asp:CheckBox ID="Terms" runat="server" Checked="false" /> 13 <asp:Label ID="LabelTermsText" runat="server" AssociatedControlID="Terms"> 14 Ich versichere, dass dieses Snippet nicht gegen Urheberrechte Dritter sowie geltende Gesetze verstößt. 15 </asp:Label> 16 <asp:CustomValidator 17 ID="ValTerms" 18 runat="server" 19 OnServerValidate="ValTerms_OnServerValidate" 20 ErrorMessage="Bitte bestätigen Sie, dass dieses Snippet nicht gegen geltendes Recht verstößt." 21 ToolTip="Bitte bestätigen Sie, dass dieses Snippet nicht gegen geltendes Recht verstößt." 22 ValidateEmptyText="true" 23 ClientValidationFunction="ValidateTerms" 24 ValidationGroup="AddSnippet">*</asp:CustomValidator>

No comments avaiable

Add a comment

Name *  

Email (won't be displayed) *    

Website  

Comment *  

Sicherheitscode Security Code *    

RSS