AngularJS pueden validar los datos de entrada.
Validación de formularios
AngularJS ofrece validación del lado del cliente.
AngularJS supervisa el estado de los campos del formulario y de entrada (input, textarea, select), y le permite notificar al usuario sobre el estado actual.
AngularJS también tiene información sobre si se han tocado, o modificado, o no.
Se puede utilizar estándar HTML5 atribuye a validar la entrada, o usted puede hacer sus propias funciones de validación.
validación del lado del cliente no puede por sí sola entrada de usuario segura. validación del lado del servidor también es necesario. |
Necesario
Utilice el atributo HTML5 required
para especificar que el campo de entrada debe ser llenado:
Ejemplo
Se requiere que el campo de entrada:
<form name="myForm">
<input name="myInput" ng-model="myInput"
required>
</form>
<p>The input's valid state is:</p>
<h1>{{myForm.myInput.$valid}}</h1>
Inténtalo tú mismo " Utilice el tipo de HTML5 email
para especificar que el valor debe ser un e-mail:
Ejemplo
El campo de entrada tiene que ser un 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>
Inténtalo tú mismo " Estado forma y el Estado de entrada
AngularJS está en constante actualización del estado de la forma y los campos de entrada.
Los campos de entrada tienen los siguientes estados:
-
$untouched
El campo no se ha tocado todavía -
$touched
El campo ha sido tocado -
$pristine
El campo no se ha modificado todavía -
$dirty
El campo ha sido modificado -
$invalid
El contenido del campo no es válido -
$valid
El contenido del campo es válida
Son todas las propiedades del campo de entrada, y son ya sea true
o false
.
Formas tienen los siguientes estados:
-
$pristine
No hay campos han sido modificados sin embargo, -
$dirty
Uno o más han sido modificados -
$invalid
El contenido del formulario no es válido -
$valid
El contenido del formulario es válido -
$submitted
el formulario es enviado
Son todas las propiedades de la forma, y son ya sea true
o false
.
Puede utilizar estos estados para mostrar mensajes significativos para el usuario. Por ejemplo, si se requiere un campo, y el usuario deja en blanco, se debe dar al usuario una advertencia:
Ejemplo
Mostrar un mensaje de error si el campo ha sido tocado y está más vacío:
<input name="myName" ng-model="myName" required>
<span ng-show="myForm.myName.$touched
&& myForm.myName.$invalid">The name is required.</span>
Inténtalo tú mismo " Las clases CSS
AngularJS añade clases CSS a las formas y campos de entrada en función de sus estados.
Las siguientes clases se añaden a, o se quitan de, campos de entrada:
-
ng-untouched
El campo no se ha tocado todavía -
ng-touched
El campo ha sido tocado -
ng-pristine
El campo no se ha modificado todavía -
ng-dirty
El campo ha sido modificado -
ng-valid
El contenido del campo es válida -
ng-invalid
El contenido del campo no es válida -
ng-valid- key
Una de las claves para cada validación. Ejemplo:ng-valid-required
, útil cuando hay más de una cosa que debe ser validada -
ng-invalid- key
Ejemplo:ng-invalid-required
Las siguientes clases son añadidos a, o removidos de, formas:
-
ng-pristine
No hay campos no ha sido modificado aún -
ng-dirty
Uno o más campos han sido modificados -
ng-valid
el contenido del formulario es válido -
ng-invalid
El contenido del formulario no es válida -
ng-valid- key
Una de las claves para cada validación. Ejemplo:ng-valid-required
, útil cuando hay más de una cosa que debe ser validada -
ng-invalid- key
Ejemplo:ng-invalid-required
Las clases se eliminan si el valor que representan es false
.
Añadir estilos de estas clases para dar a su solicitud una interfaz de usuario mejor y más intuitiva.
Ejemplo
Aplicar estilos, el uso de CSS estándar:
<style>
input.ng-invalid {
background-color: pink;
}
input.ng-valid {
background-color: lightgreen;
}
</style>
Inténtalo tú mismo " Los formularios también pueden ser de estilo:
Ejemplo
Aplicar estilos de formas sin modificar (vírgenes), y para las formas modificadas:
<style>
form.ng-pristine {
background-color: lightblue;
}
form.ng-dirty {
background-color: pink;
}
</style>
Inténtalo tú mismo " validación personalizada
Para crear su propia función de validación es un poco más complejo. Usted tiene que agregar una nueva directiva para su aplicación, y hacer frente a la validación dentro de una función con ciertos argumentos especificados.
Ejemplo
Crear su propia directiva, que contiene una función de validación personalizada, y se refieren a ella mediante el uso de my-directive
.
El campo sólo será válido si el valor contiene el carácter "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>
Inténtalo tú mismo " Ejemplo Explicación:
En HTML, la nueva directiva se refiere mediante el atributo my-directive
.
En el JavaScript empezamos mediante la adición de una nueva directiva nombrada myDirective
.
Recuerde, al nombrar una directiva, debe utilizar un nombre de camello caso, myDirective
, pero cuando la invoca, debe utilizar -
nombre separado, my-directive
.
A continuación, devolver un objeto que se especifica que se requiere ngModel
, que es el ngModelController.
Hacer una función de enlace que tiene algunos argumentos, donde el cuarto argumento, mCtrl
, es la ngModelController
,
A continuación, especifique una función, en este caso llamado myValidation
, que toma un argumento, este argumento es el valor del elemento de entrada.
Comprueba si el valor contiene la letra "e", y establecer la validez del controlador de modelo para ya sea true
o false
.
Por fin, mCtrl.$parsers.push(myValidation);
Agregará el myValidation
función de una serie de otras funciones, que se ejecuta cada vez que cambia el valor de entrada.
Ejemplo de validación
<!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>
Inténtalo tú mismo " El novalidate representación de atributo HTML se utiliza para desactivar la validación navegador por defecto. |
ejemplo Explicación
La directiva AngularJS ng-modelo se une a los elementos de entrada para el modelo.
El objeto modelo tiene dos propiedades: de usuario y correo electrónico.
Debido ng-show, los tramos con color: rojo sólo se muestran cuando el usuario o correo electrónico es sucio y $ $ válido.