AngularJS possono convalidare i dati di input.
validazione dei form
AngularJS offre validazione dei form lato client.
AngularJS controlla lo stato dei campi del modulo e di ingresso (input, textarea, selezionare), e consente di notificare l'utente circa lo stato attuale.
AngularJS detiene anche informazioni riguardo se sono stati toccati, o modificati, o no.
È possibile utilizzare standard HTML5 attributi per convalidare l'input, oppure si può fare il vostro proprio funzioni di validazione.
![]() | la validazione lato client non può da solo l'input dell'utente sicuro. validazione lato server è anche necessario. |
---|
richiesto
Utilizzare l'attributo HTML5 required
per specificare che il campo di input deve essere compilato:
Esempio
È necessario il campo di inserimento:
<form name="myForm">
<input name="myInput" ng-model="myInput"
required>
</form>
<p>The input's valid state is:</p>
<h1>{{myForm.myInput.$valid}}</h1>
Prova tu stesso " Utilizzare il tipo di HTML5 email
per specificare che il valore deve essere una e-mail:
Esempio
Il campo di input deve essere una e-mail:
<form name="myForm">
<input name="myInput" ng-model="myInput"
type="email">
</form>
<p>The input's valid state is:</p>
<h1>{{myForm.myInput.$valid}}</h1>
Prova tu stesso " Modulo di Stato e Stato di ingresso
AngularJS è in costante aggiornamento dello stato sia della forma e dei campi di input.
I campi di input sono i seguenti stati:
-
$untouched
Il campo non è stato ancora toccato -
$touched
Il campo è stato toccato -
$pristine
Il campo non è stato ancora modificato -
$dirty
Il campo è stato modificato -
$invalid
Il contenuto del campo non è valido -
$valid
Il contenuto del campo è valido
Sono tutte le proprietà del campo di input, e sono o true
o false
.
Forme hanno i seguenti stati:
-
$pristine
Nessun campo sono ancora stati modificati -
$dirty
Uno o più sono stati modificati -
$invalid
Il contenuto del modulo non è valido -
$valid
Il contenuto modulo è valido -
$submitted
il modulo viene inviato
Sono tutte le proprietà della forma, e sono o true
o false
.
È possibile utilizzare questi stati per mostrare messaggi significativi per l'utente. Esempio, se un campo è obbligatorio, e l'utente lascia vuoto, si dovrebbe dare all'utente un avvertimento:
Esempio
Mostra un messaggio di errore se il campo è stato toccato e è vuota:
<input name="myName" ng-model="myName" required>
<span ng-show="myForm.myName.$touched
&& myForm.myName.$invalid">The name is required.</span>
Prova tu stesso " Le classi CSS
AngularJS aggiunge classi CSS a forme e campi di input a seconda della loro stati.
Le seguenti classi sono aggiunti, o rimossi da, campi di input:
-
ng-untouched
Il campo non è stato ancora toccato -
ng-touched
Il campo è stato toccato -
ng-pristine
Il campo non è stato ancora modificato -
ng-dirty
Il campo è stato modificato -
ng-valid
Il contenuto del campo è valido -
ng-invalid
Il contenuto campo non è valida -
ng-valid- key
Una chiave per ogni convalida. Esempio:ng-valid-required
, utile quando ci sono più di una cosa che deve essere convalidato -
ng-invalid- key
Esempio:ng-invalid-required
Le seguenti classi vengono aggiunti o rimossi da, forme:
-
ng-pristine
Nessun campo non è stato ancora modificato -
ng-dirty
Uno o più campi è stato modificato -
ng-valid
Il contenuto modulo è valido -
ng-invalid
Il contenuto modulo non è valida -
ng-valid- key
Una chiave per ogni convalida. Esempio:ng-valid-required
, utile quando ci sono più di una cosa che deve essere convalidato -
ng-invalid- key
Esempio:ng-invalid-required
Le classi vengono rimossi se il valore che essi rappresentano è false
.
Aggiungere stili per queste classi per dare l'applicazione di una interfaccia utente migliore e più intuitiva.
Esempio
Applicare stili, utilizzando standard di CSS:
<style>
input.ng-invalid {
background-color: pink;
}
input.ng-valid {
background-color: lightgreen;
}
</style>
Prova tu stesso " I moduli possono anche essere in stile:
Esempio
Applicare stili per le forme non modificati (incontaminate), e per le forme modificate:
<style>
form.ng-pristine {
background-color: lightblue;
}
form.ng-dirty {
background-color: pink;
}
</style>
Prova tu stesso " convalida personalizzato
Per creare la propria funzione di validazione è un po 'più complicato. È necessario aggiungere una nuova direttiva per l'applicazione, e trattare con la convalida all'interno di una funzione con determinati argomenti specificati.
Esempio
Crea il tuo direttiva, che contiene una funzione di validazione personalizzata, e si riferiscono ad esso utilizzando my-directive
.
Il campo sarà valida solo se il valore contiene il carattere "e":
<form name="myForm">
<input name="myInput" ng-model="myInput" required
my-directive>
</form>
<script>
var app = angular.module('myApp',
[]);
app.directive('myDirective', function() {
return {
require: 'ngModel',
link: function(scope, element,
attr, mCtrl) {
function myValidation(value)
{
if (value.indexOf("e") > -1)
{
mCtrl.$setValidity('charE',
true);
} else {
mCtrl.$setValidity('charE', false);
}
return value;
}
mCtrl.$parsers.push(myValidation);
}
};
});
</script>
Prova tu stesso " Esempio spiegato:
In HTML, la nuova direttiva sarà denominato utilizzando l'attributo my-directive
.
In JavaScript si parte con l'aggiunta di una nuova direttiva di nome myDirective
.
Ricordate, quando la denominazione di una direttiva, è necessario utilizzare un nome caso cammello, myDirective
, ma quando si richiama, è necessario usare -
nome separato, my-directive
.
Poi, restituire un oggetto in cui si specifica che abbiamo bisogno ngModel
, che è il ngModelController.
Fare una funzione di collegamento che prende alcuni argomenti, dove il quarto argomento, mCtrl
, è il ngModelController
,
Poi specificare una funzione, in questo caso chiamato myValidation
, che accetta un argomento, questo argomento è il valore dell'elemento di input.
Testare se il valore contiene la lettera "e", e impostare la validità del regolatore modello sia true
o false
.
Alla fine, mCtrl.$parsers.push(myValidation);
Aggiungerà la myValidation
funzione di una serie di altre funzioni, che verrà eseguito ogni volta che il valore cambia in ingresso.
convalida Esempio
<!DOCTYPE html>
<html>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body>
<h2>Validation Example</h2>
<form ng-app="myApp"
ng-controller="validateCtrl"
name="myForm" novalidate>
<p>Username:<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>Email:<br>
<input type="email" name="email" ng-model="email" required>
<span
style="color:red" ng-show="myForm.email.$dirty && myForm.email.$invalid">
<span ng-show="myForm.email.$error.required">Email is required.</span>
<span ng-show="myForm.email.$error.email">Invalid email address.</span>
</span>
</p>
<p>
<input type="submit"
ng-disabled="myForm.user.$dirty && myForm.user.$invalid ||
myForm.email.$dirty && myForm.email.$invalid">
</p>
</form>
<script>
var app = angular.module('myApp', []);
app.controller('validateCtrl',
function($scope) {
$scope.user = 'John Doe';
$scope.email = '[email protected]';
});
</script>
</body>
</html>
Prova tu stesso " ![]() | L'attributo modulo novalidate HTML viene utilizzato per disattivare la convalida browser predefinito. |
---|
esempio spiegato
Il ng-modello di direttiva AngularJS lega gli elementi di input per il modello.
L'oggetto modello ha due proprietà: facilità d'uso ed e-mail.
A causa della ng-spettacolo, le campate con colore: rosso vengono visualizzati solo quando l'utente o e-mail è di $ sporco e $ valido.