AngularJS-Formularvalidierung beim Senden: Registrierungsbeispiel

Formularvalidierung in AngularJS

Formularvalidierung in AngularJS ist der Prozess, der sicherstellt, dass die in ein Formular eingegebenen Daten korrekt und vollstรคndig sind. Wenn ein Benutzer das Formular absendet, erfolgt zunรคchst eine Validierung, bevor die Daten an den Server gesendet werden. Der Validierungsprozess stellt im bestmรถglichen MaรŸe sicher, dass die Daten fรผr die Eingabefelder richtig eingegeben werden.

Nehmen wir als reales Beispiel eine Site an, die ein Registrierungsformular erfordert, bevor man vollen Zugriff auf diese Site erhรคlt. Die Registrierungsseite wรผrde Eingabefelder fรผr Benutzername, Passwort, E-Mail-ID usw. enthalten.

Beispielsweise muss die E-Mail-ID immer das Format Benutzername@site.domain; wenn jemand nur den Benutzernamen in die E-Mail-ID eingibt, sollte die Validierung im Idealfall fehlschlagen. Bei der Validierung werden also diese grundlegenden Prรผfungen durchgefรผhrt, bevor die Details zur weiteren Verarbeitung an den Server gesendet werden.

Formularvalidierung mit HTML5

Bei der Formularvalidierung handelt es sich um den Prozess der Vorabvalidierung der vom Benutzer in ein Webformular eingegebenen Informationen, bevor diese an den Server gesendet werden. Es ist immer besser, die Informationen auf der Clientseite selbst zu validieren. Dies liegt daran, dass der Aufwand geringer ist, wenn dem Benutzer das Formular erneut angezeigt werden muss, wenn die eingegebenen Informationen falsch waren.

Schauen wir uns an, wie die AngularJS-Formularvalidierung in HTML5 durchgefรผhrt werden kann.

In unserem Beispiel zeigen wir dem Benutzer ein einfaches Registrierungsformular, in das er Angaben wie Benutzernamen, Passwort, E-Mail-ID und Alter eingeben muss.

Das Formular verfรผgt รผber Validierungskontrollen, um sicherzustellen, dass der Benutzer die Informationen ordnungsgemรครŸ eingibt.

Formularvalidierung mit HTML5

<!DOCTYPE html>
<html>
<head>

    <meta chrset="UTF 8">
    <title>Event Registration</title>
</head>

<body  ng-app="sampleApp">
<script src="https://code.angularjs.org/1.6.9/angular-route.js"></script>
<script src="https://code.angularjs.org/1.6.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.6.9/angular.js"></script>
<script src="lib/bootstrap.js"></script>
<script src="lib/bootstrap.css"></script>
<h1> Guru99 Global Event</h1>
<div ng-controller="AngularController">

    <form>
        &nbsp;&nbsp;&nbsp;&nbsp;
        Enter your user name:
        <input type="text"  name="name" required><br><br>&nbsp;&nbsp;&nbsp;

        Enter your password:&nbsp;&nbsp;&nbsp;
        <input type="password"/><br><br>&nbsp;&nbsp;&nbsp;

        Enter your email:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <input type="email"/><br><br>&nbsp;&nbsp;&nbsp;

        Enter your age:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <input type="number" /><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

        <input type="submit" value="Submit"/>
    </form>
</div>

</body>
</html>

Code Erlรคuterung

  1. Fรผr den Texteingabetyp verwenden wir das Attribut โ€žerforderlichโ€œ. Dies bedeutet, dass das Textfeld beim Absenden des Formulars nicht leer sein darf und dass im Textfeld eine Art Text vorhanden sein muss.
  2. Der nรคchste Eingabetyp ist Passwort. Da der Eingabetyp als Passwort markiert ist, wird der Text, den der Benutzer in das Feld eingibt, maskiert.
  3. Da der Eingabetyp als E-Mail angegeben ist, muss der Text im Feld dem Muster entsprechen name@site.domain.
  4. Wenn der Eingabetyp als Zahl markiert ist und ein Benutzer versucht, รผber die Tastatur oder den Buchstaben ein beliebiges Zeichen einzugeben, wird dieses nicht in das Textfeld eingegeben.

Wenn der Code erfolgreich ausgefรผhrt wird, wird die folgende Ausgabe angezeigt, wenn Sie Ihren Code im Browser zur AngularJS-Formularvalidierung beim Senden ausfรผhren.

Ausgang

Formularvalidierung mit HTML5

Um die Formularvalidierung in Aktion zu sehen, klicken Sie auf die Schaltflรคche โ€žSendenโ€œ, ohne irgendwelche Informationen auf dem Bildschirm einzugeben.

Formularvalidierung mit HTML5

Nach dem Klicken auf die Schaltflรคche โ€žSendenโ€œ wird ein Popup mit einem Validierungsfehler angezeigt, der darauf hinweist, dass das Feld ausgefรผllt werden muss.

Daher fรผhrt die Validierung fรผr das als erforderlich markierte Steuerelement dazu, dass die Fehlermeldung angezeigt wird, wenn der Benutzer keinen Wert in das Textfeld eingibt.

Formularvalidierung mit HTML5

Wenn der Benutzer einen beliebigen Wert in die Passwortsteuerung eingibt, werden Sie das Symbol โ€ž*โ€œ bemerken, das zum Maskieren der eingegebenen Zeichen verwendet wird.

Formularvalidierung mit HTML5

Geben wir dann eine falsche E-Mail-ID ein und klicken auf die Schaltflรคche โ€žSendenโ€œ. Nach dem Klicken auf die Schaltflรคche โ€žSendenโ€œ wird ein Popup mit einem Validierungsfehler angezeigt, der besagt, dass das Feld das Symbol โ€ž@โ€œ enthalten muss.

Die Validierung fรผr das Steuerelement, das als E-Mail-Steuerelement markiert wurde, fรผhrt dazu, dass die Fehlermeldung angezeigt wird, wenn der Benutzer keine gรผltige E-Mail-ID in das Textfeld eingibt.

Wenn Sie schlieรŸlich versuchen, Zeichen in das Alterstextsteuerelement einzugeben, werden diese nicht auf dem Bildschirm eingegeben. Das Steuerelement wird nur dann mit einem Wert gefรผllt, wenn eine Zahl in das Steuerelement eingegeben wird.

Formularvalidierung mit $dirty, $valid, $invalid, $pristine

AngularJS stellt seine zusรคtzlichen Eigenschaften zur Validierung bereit. AngularJS stellt die folgenden Eigenschaften fรผr Steuerelemente zur Validierung bereit

  • $schmutzig โ€“ Der Benutzer hat mit dem Steuerelement interagiert
  • $gรผltig โ€“ Der Feldinhalt ist gรผltig
  • $ungรผltig โ€“ Der Feldinhalt ist ungรผltig
  • $makellos โ€“ Der Benutzer hat noch nicht mit dem Steuerelement interagiert

Nachfolgend sind die Schritte aufgefรผhrt, die zur Durchfรผhrung der Angular-Validierung befolgt werden mรผssen.

Schritt 1) Verwenden Sie beim Deklarieren des Formulars die Eigenschaft no valide. Diese Eigenschaft teilt HTML5 mit, dass die Validierung von AngularJS durchgefรผhrt wird.

Schritt 2) Stellen Sie sicher, dass fรผr das Formular ein Name definiert ist. Der Grund dafรผr ist, dass bei der Durchfรผhrung der Angular-Validierung der Formularname verwendet wird.

Schritt 3) Stellen Sie sicher, dass fรผr jedes Steuerelement auch ein Name definiert ist. Der Grund dafรผr ist, dass bei der Durchfรผhrung der Angular-Validierung der Kontrollname verwendet wird.

Schritt 4) Verwenden Sie die ng-zeigen Anweisung, um die Eigenschaften $dirty, $invalid und $valid fรผr die Steuerelemente zu รผberprรผfen.

Schauen wir uns ein Beispiel an, das die oben genannten Schritte beinhaltet.

In unserem Beispiel,

Wir werden nur ein einfaches Textfeld haben, in das der Benutzer einen Themennamen eingeben muss. Wenn dies nicht geschieht, wird ein Validierungsfehler ausgelรถst und dem Benutzer die Fehlermeldung angezeigt.

Formularvalidierung mit $dirty, $valid, $invalid, $pristine

<!DOCTYPE html>
<html>
<head>
    <meta chrset="UTF 8">
    <title>Event Registration</title>
</head>

<body>
<script src="https://code.angularjs.org/1.6.9/angular-route.js"></script>
<script src="https://code.angularjs.org/1.6.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.6.9/angular.js"></script>
<script src="lib/bootstrap.js"></script>
<script src="lib/bootstrap.css"></script>
<h1> Guru99 Global Event</h1>
<form ng-app="DemoApp" ng-controller="DemoController" name="myForm" novalidate>
    <p>Topic Name:<br>
        <input type="text" name="user" ng-model="user" required>

        <span style="color:red" ng-show="myForm.user.$dirty && myForm.user.$invalid">

            <span ng-show="myForm.user.$error.required">Username is required</span>
        </span>
    </p>
    <p>
        <input type="submit" ng-disabled="myForm.user.$dirty && myForm.user.$invalid">
    </p>
</form>
<script>
    var app = angular.module("DemoApp",[]);

    app.controller("DemoController",function($scope) {

        $scope.Display = function () {
            $scope.user='Angular';
        }
    });
</script>
</body>
</html>

Code Erlรคuterung

  1. Beachten Sie, dass wir dem Formular einen Namen gegeben haben, der โ€žmyFormโ€œ lautet. Dies ist beim Zugriff auf die Steuerelemente im Formular fรผr die AngularJS-Validierung erforderlich.
  2. Verwenden Sie die Eigenschaft โ€žnovalidateโ€œ, um sicherzustellen, dass das HTML-Formular AngularJS die Durchfรผhrung der Validierung ermรถglicht.
  3. Wir verwenden die Anweisung ng-show, um die Eigenschaften โ€ž$dirtyโ€œ und โ€ž$invalidโ€œ zu prรผfen. Das bedeutet, dass der Eigenschaftswert โ€ž$dirtyโ€œ wahr ist, wenn das Textfeld geรคndert wurde. Auch wenn der Wert des Textfelds null ist, wird die Eigenschaft โ€ž$invalidโ€œ wahr. Wenn also beide Eigenschaften wahr sind, schlรคgt die Validierung fรผr das Steuerelement fehl. Wenn also beide Werte wahr sind, wird auch ng-show wahr und das Span-Steuerelement mit den roten Zeichen wird angezeigt.
  4. Dabei รผberprรผfen wir die Eigenschaft โ€ž$errorโ€œ, die ebenfalls als โ€žtrueโ€œ ausgewertet wird, da wir fรผr das Steuerelement angegeben haben, dass ein Wert fรผr das Steuerelement eingegeben werden soll. In einem solchen Fall, in dem keine Daten in das Textfeld eingegeben wurden, zeigt das Span-Steuerelement den Text โ€žBenutzername ist erforderlichโ€œ an.
  5. Wenn der Wert des Textfeld-Steuerelements ungรผltig ist, mรถchten wir auch die Schaltflรคche โ€žSendenโ€œ deaktivieren, damit der Benutzer das Formular nicht senden kann. Wir verwenden die Eigenschaft โ€žng-disabledโ€œ fรผr das Steuerelement, um dies basierend auf dem bedingten Wert der Eigenschaften โ€ž$dirtyโ€œ und โ€ž$invalidโ€œ des Steuerelements zu tun.
  6. Im Controller setzen wir einfach den Anfangswert des Textfeldwerts auf den Text โ€žAngularJSโ€œ. Dies wird nur durchgefรผhrt, um einen Standardwert fรผr das Textfeld festzulegen, wenn das Formular zum ersten Mal angezeigt wird. Es zeigt besser, wie die Validierung fรผr das Textfeld erfolgt.

Wenn der Code erfolgreich ausgefรผhrt wird, wird die folgende Ausgabe angezeigt, wenn Sie Ihren Code im Browser ausfรผhren.

Ausgang

Formularvalidierung mit $dirty, $valid, $invalid, $pristine

Wenn das Formular zum ersten Mal angezeigt wird, zeigt das Textfeld den Wert โ€žAngularJSโ€œ an und die โ€žSenden-Schaltflรคcheโ€œ ist aktiviert. Sobald Sie den Text aus dem Steuerelement entfernen, wird die Validierungsfehlermeldung aktiviert und die โ€žSenden-Schaltflรคcheโ€œ deaktiviert.

Formularvalidierung mit $dirty, $valid, $invalid, $pristine

Der obige Screenshot zeigt zwei Dinge

  • Die Schaltflรคche โ€žSendenโ€œ ist deaktiviert
  • Im Textfeld โ€žThemaโ€œ ist kein Themenname vorhanden. Daher wird die Fehlermeldung โ€žBenutzername ist erforderlichโ€œ angezeigt.

Formularvalidierung mit AngularJS Auto Validate

In AngularJS gibt es die Mรถglichkeit, alle Steuerelemente in einem Formular automatisch zu validieren, ohne dass benutzerdefinierter Code fรผr die Validierung geschrieben werden muss. Dies kann durch die Einbindung eines benutzerdefinierten Moduls namens โ€žjcs-AutoValidateโ€œ erfolgen.

Wenn dieses Modul vorhanden ist, mรผssen Sie keinen speziellen Code einfรผgen, um die Validierung durchzufรผhren oder die Fehlermeldungen anzuzeigen. Dies alles wird vom Code im JCS-AutoValidate erledigt.

Schauen wir uns ein einfaches Beispiel an, wie dies erreicht werden kann.

In diesem Beispiel

Wir werden nur ein einfaches Formular mit einem Textfeld-Steuerelement haben, das ein Pflichtfeld ist. Wenn dieses Steuerelement nicht ausgefรผllt ist, sollte eine Fehlermeldung angezeigt werden.

Formularvalidierung mit AngularJS Auto Validate

<!DOCTYPE html>
<html>
<head>
    <meta chrset="UTF 8">
    <title>Event Registration</title>
</head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<script src="https://code.angularjs.org/1.6.9/angular.js"></script>
<script src="lib/jcs-auto-validate.min.js"></script>
<body>
<h1> Guru99 Event</h1>

<div ng-app="DemoApp">
    <div class="form-group">
        <form name="myForm" novalidate>
            <p>Topic Name:<br></p>
                <div class="form-group">
            <input class="form-control" type="text" id="user" ng-model="user" required="required"/>

        </div>
            <div>
                <div class="form-group">
                    <input type="submit">
                </div>
            </div>
        </form>
    </div>
</div>
<script>
    var app=angular.module('DemoApp',['jcs-autoValidate']);
</script>
</body>
</html>

Code Erlรคuterung

  1. Zuerst mรผssen wir das Skript โ€žjcs-auto-validate.jsโ€œ einbinden, das รผber alle Funktionen zur automatischen Validierung verfรผgt.
  2. Wir mรผssen sicherstellen, dass jedes Element einschlieรŸlich des โ€ždiv-Tagsโ€œ in einer โ€žform-groupโ€œ-Klasse platziert wird.
  3. AuรŸerdem muss sichergestellt werden, dass jedes Element (bei dem es sich um ein HTML-Element wie Eingabesteuerelement, Spansteuerelement, Div-Steuerelement usw. handelt) wie die Eingabesteuerelemente auch in der Formulargruppenklasse platziert wird.
  4. Fรผgen Sie jcs-autovalidate in Ihr AngularJS-JS-Modul ein.

Wenn der Code erfolgreich ausgefรผhrt wird, wird die folgende Ausgabe angezeigt, wenn Sie Ihren Code im Browser ausfรผhren.

Ausgang

Formularvalidierung mit AngularJS Auto Validate

Wenn Sie Ihren Code ausfรผhren, wird standardmรครŸig das obige Formular entsprechend dem HTML-Code angezeigt.

Formularvalidierung mit AngularJS Auto Validate

Wenn Sie versuchen, das Formular abzusenden, wird die Fehlermeldung โ€žDieses Feld ist erforderlichโ€œ angezeigt. All dies wird durch die JCS-AutoValidate-Option erledigt.

Benutzer-Feedbacks mit Ladda-Buttons

Bei den โ€žLaddaโ€œ-Knรถpfen handelt es sich um ein spezielles Gerรผst fรผr darรผber liegende Knรถpfe JavaSkript um Tasten einen visuellen Effekt zu verleihen, wenn sie gedrรผckt werden.

Wenn also ein Button mit dem Attribut โ€žladdaโ€œ versehen wird und gedrรผckt wird, wird ein Spin-Effekt angezeigt. AuรŸerdem stehen fรผr die Schaltflรคche verschiedene Datenstile zur Verfรผgung, um zusรคtzliche visuelle Effekte bereitzustellen.

Schauen wir uns ein Beispiel an, wie man die โ€žLaddaโ€œ-Tasten in Aktion sieht. Wir werden nur ein einfaches Formular sehen, das รผber eine Schaltflรคche zum Senden verfรผgt. Wenn die Taste gedrรผckt wird, wird ein Dreheffekt auf der Taste angezeigt.

Benutzer-Feedbacks mit Ladda-Buttons

<!DOCTYPE html>
<html>
<head>
    <meta chrset="UTF 8">
    <title>Event Registration</title>
</head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<script src="https://code.angularjs.org/1.6.9/angular.js"></script>
<script src="lib/jcs-auto-validate.min.js"></script>
<script src="lib/angular-ladda.js"></script>
<script src="lib/angular-ladda.min.js"></script>
<script src="lib/bootstrap.js"></script>
<script src="lib/bootstrap.css"></script>
<body>
<h1> Guru99 Event</h1>

<div ng-app="DemoApp" ng-controller="DemoController">
    <div class="form-group">
        <form name="myForm" novalidate ng-submit="submit()">
            <div>
                <button class="btn btn-primary" type="submit" ladda="submitting" name="sbutton" data-style="expand-right">Submit</button>
            </div>
        </form>
    </div>
</div>
<script>
    var app=angular.module('DemoApp',['jcs-autoValidate','angular-ladda']);

    app.controller('DemoController',function($scope) {
        $scope.submitting = false;

        $scope.submit = function () {
            $scope.submitting = true;
        }
    });
</script>
</body>
</html>

Code Erlรคuterung

  1. Wir verwenden das โ€žng-submitโ€-Direktive, um eine Funktion namens โ€žsubmitโ€œ aufzurufen. Diese Funktion wird verwendet, um das Ladda-Attribut der Senden-Schaltflรคche zu รคndern.
  2. Das Ladda-Attribut ist ein spezielles Attribut des Ladda-Frameworks. Es ist dieses Attribut, das der Kontrolle den Spin-Effekt hinzufรผgt. Wir setzen den Wert des Ladda-Attributs auf die Variable Submitting.
  3. Die data-style-Eigenschaft ist wiederum ein zusรคtzliches Attribut des Ladda-Frameworks, das lediglich einen anderen visuellen Effekt zur Senden-Schaltflรคche hinzufรผgt.
  4. Das Modul โ€žAngularJS-laddaโ€œ muss zur AngularJS.JS-Anwendung hinzugefรผgt werden, damit das Ladda-Framework funktioniert.
  5. Zunรคchst definieren wir den Wert einer Variablen namens โ€žsubmittingโ€œ und setzen ihn auf โ€žfalseโ€œ. Dieser Wert wird fรผr das ladda-Attribut der Submit-Schaltflรคche festgelegt. Indem wir dies zunรคchst auf โ€žfalseโ€œ setzen, sagen wir, dass wir noch nicht mรถchten, dass die Schaltflรคche โ€žSendenโ€œ den Ladda-Effekt hat.
  6. Wir deklarieren eine Funktion, die aufgerufen wird, wenn die Schaltflรคche โ€žSendenโ€œ gedrรผckt wird. In dieser Funktion setzen wir โ€žsubmittingโ€œ auf โ€žtrueโ€œ. Dadurch wird der Ladda-Effekt auf die Schaltflรคche โ€žSendenโ€œ angewendet.

Wenn der Code erfolgreich ausgefรผhrt wird, wird die folgende Ausgabe angezeigt, wenn Sie Ihren Code im Browser ausfรผhren.

Ausgang

Benutzer-Feedbacks mit Ladda-Buttons

Beim ersten Anzeigen des Formulars wird die Schaltflรคche โ€žSendenโ€œ in ihrer einfachen Form angezeigt.

Benutzer-Feedbacks mit Ladda-Buttons

Wenn die Schaltflรคche โ€žSendenโ€œ gedrรผckt wird, wird die Sendevariable im Controller auf โ€žtrueโ€œ gesetzt. Dieser Wert wird an das โ€žladdaโ€œ-Attribut der Senden-Schaltflรคche รผbergeben, was den Spin-Effekt der Schaltflรคche verursacht.

Zusammenfassung

  • Die Validierung der Textfeld-HTML-Steuerelemente kann mithilfe des Attributs โ€žerforderlichโ€œ erfolgen.
  • In HTML5 wurden neue Steuerelemente wie Kennwort, E-Mail und Nummer hinzugefรผgt, die รผber eigene Validierungssรคtze verfรผgen.
  • Die Formularvalidierung in AngularJS erfolgt durch Betrachtung der Werte $dirty, $valid, $invalid und $pristine eines Formularsteuerelements.
  • Eine automatische Validierung in AngularJS-Anwendungen kann auch mithilfe des JCS-Auto-Validate-Moduls erreicht werden.
  • Ladda-Schaltflรคchen kรถnnen zu einer Angular.js-Anwendung hinzugefรผgt werden, um dem Benutzer beim Drรผcken der Schaltflรคche ein etwas verbessertes visuelles Gefรผhl zu vermitteln.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: