2016-08-04 41 views
1

Bei der Anwendung ich die Entwicklung bin ich sowohl die Validierung Kontrollen unter Verwendung von ASP.NET Web Forms zur Verfügung gestellt und für bestimmte Teile der Form Ich verwende JavaScript.ASP.NET WebForms - JavaScript ausführen und Validierungskontrolle bei gleichzeitig

Beide Aspekte der Validierung funktioniert, wie es sollte, aber wenn ich auf der ersten der ASP.NET-Validierungstaste kommt auf Senden klicken, folgt dann in JavaScript gemacht meine benutzerdefinierten Validierung. Wenn das Formular unvollständig ist und wenn das Formular übermittelt wird, werden nur die ASP.NET-Überprüfungsfehler angezeigt, und wenn diese Fehler behoben werden und wenn das Formular übermittelt wird, werden meine Überprüfungsfehler angezeigt.

Was ich will, ist, dass, wenn ein Benutzer auf die Schaltfläche Senden klickt, sowohl die ASP.NET Validierung und meine JavaScript-Validierung gleichzeitig auftreten, so dass Benutzer alle Fehler auf einmal sehen kann.

<form id="StudentLSFApplication" runat="server" onsubmit="return validateForm()"> 
    <!--other html code--> 
    <asp:Button ID="SaveLSFApplication" runat="server" Text="Save Application" OnClick="saveApplication" 
      ValidationGroup="AllValidation" /> 
</form> 

<script> 
    function validateForm() { 
     //my validation 
    } 
</script> 

Wie Sie aus meinem Beispielcode sehen können, habe ich die validateForm() JavaScript-Funktion in einem onsubmit Ereignis aufgerufen wird, und Button Steuerung ist Teil der AllValidation Validierungsgruppe. Im Moment auf Formular der AllValidation zuerst eintritt, und wenn die in Ordnung ist, dann validateForm() auftritt.

Antwort

2

Ich denke, was Sie suchen die CustomValidator ist. Sie können es wie folgt verwenden:

<script type="text/javascript"> 
     function validateFormElement(sender, args) { 
      if (args.Value == "waarde") { 
       args.IsValid = true; 
      } else { 
       args.IsValid = false; 
      } 
     } 
    </script> 

    <asp:TextBox ID="TextBox1" runat="server" ValidationGroup="myValidation"></asp:TextBox> 

    <asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="Input error" ValidationGroup="myValidation" ClientValidationFunction="validateFormElement" ControlToValidate="TextBox1"></asp:CustomValidator> 

    <asp:Button ID="Button1" runat="server" Text="Button" ValidationGroup="myValidation" /> 

Und Sie können immer noch alle anderen Validatoren verwenden. Keine Notwendigkeit, jede Validierung, die Sie wollen, in diese eine JavaScript-Funktion zu stopfen.

+0

Es ist empfohlen von Microsoft oder, für mehr Komplexität bereitgestellt andere Validatoren zu verwenden, ein 'CustomValidator' für jede Art von Validierung/Kontrolle. Die ASP.NET-Validatoren sind großartig, weil sie mit JavaScript ** und mit C# (Code dahinter) validiert werden **. JavaScript kann umgangen werden, daher sollten Sie einen Code hinter dem Event auf dem 'CustomValidator' hinzufügen und die Validierung nicht nur auf JavaScript, sondern sogar auf C# programmieren. Ein 'CustomValidator' sollte nur auf ein Steuerelement zeigen, aber es kann die gleichen Funktionen über andere Validatoren teilen. 'ControlToValidate' sollte gesetzt sein. – modiX

+0

Das obige Beispiel war für ein einzelnes Steuerelement in einer Form, nicht die vollständige Validierung in einer Funktion. Beantwortete die Antwort ein wenig, um das deutlicher zu machen. Wenn Sie jedoch eine komplexere Client-seitige Validierung über mehrere Steuerelemente durchführen möchten, wie "wenn CheckBox1 aktiviert ist, dann muss TextBox1 Daten enthalten", können Sie das ControlToValidate auslassen, um sicherzustellen, dass CustomValidator ausgelöst wird. Und immer noch Validierung in Code hinter wie modiX schlägt vor. – VDWWD

+0

Großartig, das hat funktioniert, danke! – RoyalSwish