Convalida del modulo AngularJS all'invio: esempio di registrazione

Convalida del modulo in AngularJS

Convalida del modulo in AngularJS รจ il processo di verifica della correttezza e completezza dei dati immessi in un modulo. Quando un utente invia il modulo, la convalida avviene prima che i dettagli vengano inviati al server. Il processo di convalida assicura nella migliore misura possibile che i dettagli per i campi di input vengano immessi nel modo corretto.

In un esempio reale, ipotizziamo un sito che richiede la compilazione di un modulo di registrazione prima di ottenere l'accesso completo al sito. La pagina di registrazione avrebbe campi di input per nome utente, password, ID e-mail e cosรฌ via.

Ad esempio, l'ID e-mail deve sempre essere in un formato di nomeutente@sito.dominio; se qualcuno inserisce solo il nome utente nell'ID e-mail, allora idealmente la convalida dovrebbe fallire. Quindi la convalida esamina l'esecuzione di questi controlli di base prima che i dettagli vengano inviati al server per un'ulteriore elaborazione.

Convalida del modulo utilizzando HTML5

La convalida del modulo รจ il processo di preconvalida delle informazioni immesse in un modulo Web dall'utente prima che vengano inviate al server. รˆ sempre meglio convalidare le informazioni sul lato client stesso. Questo perchรฉ aggiunge meno spese generali se all'utente dovesse essere presentato nuovamente il modulo se le informazioni inserite erano errate.

Diamo un'occhiata a come puรฒ essere condotta la convalida del modulo AngularJS in HTML5.

Nel nostro esempio, mostreremo all'utente un semplice modulo di registrazione in cui l'utente dovrร  inserire dati quali nome utente, password, indirizzo e-mail ed etร .

Il modulo avrร  controlli di convalida per garantire che l'utente inserisca le informazioni in modo corretto.

Convalida del modulo utilizzando 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 Spiegazione

  1. Per il tipo di input di testo, stiamo usando l'attributo 'required'. Ciรฒ significa che la casella di testo non puรฒ essere vuota quando il modulo viene inviato e che un qualche tipo di testo deve essere presente nella casella di testo.
  2. Il successivo tipo di input รจ la password. Poichรฉ il tipo di input รจ contrassegnato come password, quando l'utente inserisce del testo nel campo, questo verrร  mascherato.
  3. Poichรฉ il tipo di input รจ specificato come e-mail, il testo nella casella deve corrispondere al modello nome@sito.dominio.
  4. Quando il tipo di input รจ contrassegnato come numero, se un utente prova a immettere un carattere tramite la tastiera o l'alfabeto, questo non verrร  immesso nella casella di testo.

Se il codice viene eseguito correttamente, verrร  visualizzato il seguente output quando si esegue il codice nel browser per la convalida del modulo AngularJS all'invio.

Uscita

Convalida del modulo utilizzando HTML5

Per vedere la convalida del modulo in azione, fare clic sul pulsante Invia senza inserire alcuna informazione sullo schermo.

Convalida del modulo utilizzando HTML5

Dopo aver cliccato sul pulsante Invia, verrร  visualizzato un pop-up che mostra un errore di convalida che indica che il campo deve essere compilato.

Pertanto la convalida del controllo contrassegnato come richiesto provoca la visualizzazione del messaggio di errore se l'utente non inserisce alcun valore nel campo di testo.

Convalida del modulo utilizzando HTML5

Quando l'utente inserisce un valore nel controllo della password, noterai il simbolo "*" utilizzato per mascherare i caratteri immessi.

Convalida del modulo utilizzando HTML5

Inseriamo quindi un ID e-mail errato e clicchiamo sul pulsante Invia. Dopo aver cliccato sul pulsante Invia, apparirร  un pop-up che mostra un errore di convalida che indica che il campo deve avere il simbolo @.

Pertanto la convalida del controllo contrassegnato come controllo e-mail causerร  la visualizzazione di un messaggio di errore se l'utente non inserisce un ID e-mail corretto nel campo di testo.

Infine, quando provi a inserire qualsiasi carattere nel controllo del testo dell'etร , questo non verrร  inserito sullo schermo. Il controllo verrร  popolato con un valore solo quando viene immesso un numero nel controllo.

Convalida del modulo utilizzando $dirty, $valid, $invalid, $pristine

AngularJS fornisce le sue proprietร  aggiuntive per la convalida. AngularJS fornisce le seguenti proprietร  per i controlli a fini di convalida

  • $ sporco โ€“ L'utente ha interagito con il controllo
  • $valido โ€“ Il contenuto del campo รจ valido
  • $non valido โ€“ Il contenuto del campo non รจ valido
  • $ immacolato โ€“ L'utente non ha ancora interagito con il controllo

Di seguito sono riportati i passaggi da seguire per effettuare la validazione Angular.

Passo 1) Utilizzare la proprietร  no validate quando si dichiara il modulo. Questa proprietร  indica a HTML5 che la convalida verrร  eseguita da AngularJS.

Passo 2) Assicurarsi che per il modulo sia definito un nome. Il motivo di ciรฒ รจ che, quando si esegue la convalida Angular, verrร  utilizzato il nome del modulo.

Passo 3) Assicurarsi che per ogni controllo sia definito anche un nome. Il motivo di ciรฒ รจ che, quando si esegue la convalida Angular, verrร  utilizzato il nome del controllo.

Passo 4) Usa il ng-mostra direttiva per verificare le proprietร  $dirty, $invalid e $valid per i controlli.

Diamo un'occhiata a un esempio che incorpora i passaggi sopra menzionati.

Nel nostro esempio,

Avremo solo un semplice campo di testo in cui l'utente deve immettere un nome di argomento nella casella di testo. Se ciรฒ non viene fatto, verrร  attivato un errore di convalida e il messaggio di errore verrร  mostrato all'utente.

Convalida del modulo utilizzando $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 Spiegazione

  1. Nota che abbiamo dato un nome al modulo che รจ "myForm". Ciรฒ รจ necessario quando si accede ai controlli del modulo per la convalida AngularJS.
  2. Utilizzo della proprietร  โ€œnovalidateโ€ per garantire che il modulo HTML consenta ad AngularJS di eseguire la convalida.
  3. Stiamo utilizzando la direttiva ng-show per controllare le proprietร  "$dirty" e "$invalid". Ciรฒ significa che se la casella di testo รจ stata modificata, il valore della proprietร  "$dirty" sarร  true. Inoltre, nel caso in cui il valore della casella di testo sia null, la proprietร  "$invalid" diventerร  true. Quindi, se entrambe le proprietร  sono true, la convalida fallirร  per il controllo. Quindi, se entrambi i valori sono true, anche ng-show diventerร  true e verrร  visualizzato il controllo span con i caratteri di colore rosso.
  4. In questo caso, stiamo controllando la proprietร  "$error" che viene valutata anche come true perchรฉ abbiamo menzionato per il controllo che il valore dovrebbe essere immesso per il controllo. In tal caso, in cui non ci sono dati immessi nella casella di testo, il controllo span visualizzerร  il testo "Username is required".
  5. Se il valore del controllo textbox non รจ valido, vogliamo anche disabilitare il pulsante di invio in modo che l'utente non possa inviare il modulo. Stiamo utilizzando la proprietร  "ng-disabled" per il controllo per farlo in base al valore condizionale delle proprietร  "$dirty" e "$invalid" del controllo.
  6. Nel controller, stiamo solo impostando il valore iniziale del valore della casella di testo sul testo 'AngularJS'. Questo viene fatto solo per impostare un valore predefinito per la casella di testo quando il modulo viene visualizzato per la prima volta. Mostra meglio come avviene la convalida per il campo della casella di testo.

Se il codice viene eseguito correttamente, quando si esegue il codice nel browser verrร  visualizzato il seguente output.

Uscita

Convalida del modulo utilizzando $dirty, $valid, $invalid, $pristine

Quando il modulo viene visualizzato inizialmente, la casella di testo mostra il valore di "AngularJS" e il "pulsante di invio" รจ abilitato. Non appena rimuovi il testo dal controllo, il messaggio di errore di convalida viene abilitato e il pulsante di invio viene disabilitato.

Convalida del modulo utilizzando $dirty, $valid, $invalid, $pristine

Lo screenshot sopra mostra due cose

  • Il pulsante Invia รจ disabilitato
  • Non c'รจ alcun nome argomento nella casella di testo Argomento. Quindi, viene generato il messaggio di errore "Username is required."

Convalida del modulo utilizzando AngularJS Auto Validate

In AngularJS รจ disponibile una funzionalitร  per convalidare automaticamente tutti i controlli su un modulo senza la necessitร  di scrivere codice personalizzato per la convalida. Questo puรฒ essere fatto includendo un modulo personalizzato chiamato โ€œjcs-AutoValidateโ€.

Con questo modulo installato, non รจ necessario inserire alcun codice speciale per eseguire la convalida o mostrare i messaggi di errore. Tutto questo รจ gestito dal codice all'interno di JCS-AutoValidate.

Diamo un'occhiata a un semplice esempio di come raggiungere questo obiettivo.

In questo esempio,

Avremo solo un semplice modulo con un controllo casella di testo che รจ un campo obbligatorio. Dovrebbe essere visualizzato un messaggio di errore se questo controllo non รจ compilato.

Convalida del modulo utilizzando 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 Spiegazione

  1. Innanzitutto, dobbiamo includere lo script "jcs-auto-validate.js" che ha tutte le funzionalitร  di convalida automatica.
  2. Dobbiamo assicurarci che ogni elemento incluso il "tag div" sia inserito in una classe "form-group".
  3. รˆ inoltre necessario garantire che ogni elemento (che รจ un elemento HTML come il controllo di input, il controllo span, il controllo div e cosรฌ via) come i controlli di input siano inseriti anche nella classe form-group.
  4. Includi jcs-autovalidate nel tuo modulo AngularJS JS.

Se il codice viene eseguito correttamente, quando si esegue il codice nel browser verrร  visualizzato il seguente output.

Uscita

Convalida del modulo utilizzando AngularJS Auto Validate

Per impostazione predefinita, quando esegui il codice, il modulo sopra verrร  mostrato come per il codice HTML.

Convalida del modulo utilizzando AngularJS Auto Validate

Se provi a inviare il modulo, verrร  visualizzato il messaggio di errore che dice: "Questo campo รจ obbligatorio". Tutto questo viene fatto dall'opzione JCS-AutoValidate.

Feedback degli utenti con i pulsanti Ladda

I pulsanti "ladda" sono una struttura speciale costruita per i pulsanti sopra JavaCopione per dare un effetto visivo ai pulsanti quando vengono premuti.

Pertanto, se a un pulsante viene assegnato l'attributo "ladda" e viene premuto, verrร  mostrato un effetto di rotazione. Inoltre, sono disponibili diversi stili di dati per il pulsante per fornire effetti visivi aggiuntivi.

Diamo un'occhiata ad un esempio di come vedere i pulsanti โ€œladdaโ€ in azione. Vedremo solo un semplice modulo che ha un pulsante di invio. Quando si preme il pulsante, sul pulsante verrร  visualizzato un effetto di rotazione.

Feedback degli utenti con i pulsanti Ladda

<!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 Spiegazione

  1. Stiamo usando il "ng-invia" direttiva per chiamare una funzione chiamata "submit". Questa funzione verrร  utilizzata per modificare l'attributo ladda del pulsante di invio.
  2. L'attributo ladda รจ un attributo speciale del framework ladda. รˆ questo attributo che aggiunge l'effetto di rotazione al controllo. Stiamo impostando il valore dell'attributo ladda sulla variabile invio.
  3. La proprietร  data-style รจ ancora una volta un attributo aggiuntivo offerto dal framework ladda, che aggiunge semplicemente un effetto visivo diverso al pulsante di invio.
  4. Il modulo 'AngularJS-ladda' deve essere aggiunto all'applicazione AngularJS.JS affinchรฉ il framework ladda funzioni.
  5. Inizialmente, stiamo definendo e impostando il valore di una variabile chiamata "submission" su false. Questo valore รจ impostato per l'attributo ladda del pulsante di invio. Impostando inizialmente questo su false stiamo dicendo che non vogliamo che il pulsante di invio abbia ancora l'effetto ladda.
  6. Stiamo dichiarando una funzione che viene chiamata quando viene premuto il pulsante di invio. In questa funzione, impostiamo 'invio' su true. Ciรฒ farร  sรฌ che l'effetto ladda venga applicato al pulsante di invio.

Se il codice viene eseguito correttamente, quando si esegue il codice nel browser verrร  visualizzato il seguente output.

Uscita

Feedback degli utenti con i pulsanti Ladda

Quando il modulo viene visualizzato inizialmente, il pulsante di invio viene mostrato nella sua forma semplice.

Feedback degli utenti con i pulsanti Ladda

Quando viene premuto il pulsante di invio, la variabile di invio nel controller รจ impostata su true. Questo valore viene passato all'attributo "ladda" del pulsante di invio che provoca l'effetto di rotazione del pulsante.

Sintesi

  • La convalida dei controlli HTML della casella di testo puรฒ essere effettuata utilizzando l'attributo 'required'.
  • In HTML5 sono stati aggiunti nuovi controlli, come password, e-mail e numero, che forniscono un proprio set di convalide.
  • La convalida del modulo in AngularJS viene gestita esaminando i valori $dirty, $valid, $invalid e $pristine di un controllo del modulo.
  • La convalida automatica nelle applicazioni AngularJS puรฒ essere ottenuta anche utilizzando il modulo di convalida JCS-auto.
  • I pulsanti Ladda possono essere aggiunti a un'applicazione Angular.js per dare all'utente una sensazione visiva migliorata quando viene premuto il pulsante.

Riassumi questo post con: