AngularJS может проверять входные данные.
Форма проверки
AngularJS предлагает форму проверки на стороне клиента.
AngularJS следит за состоянием формы и полей ввода (ввод, текстовое поле, выберите), и позволяет уведомлять пользователя о текущем состоянии.
AngularJS также содержит информацию о том, были ли они соприкоснулись, или изменения, или нет.
Вы можете использовать стандартные атрибуты HTML5 для проверки вводимых данных, или вы можете сделать свои собственные функции проверки.
![]() | Валидация на стороне клиента не может в одиночку безопасного ввода данных пользователем. Проверка на стороне сервера также необходимо. |
---|
необходимые
Используйте атрибут HTML5 , required
, чтобы указать , что поле ввода должно быть заполнено:
пример
Требуется поле ввода:
<form name="myForm">
<input name="myInput" ng-model="myInput"
required>
</form>
<p>The input's valid state is:</p>
<h1>{{myForm.myInput.$valid}}</h1>
Попробуй сам " Эл. почта
Используйте тип HTML5 email
, чтобы указать , что значение должно быть по электронной почте:
пример
Поле ввода должно быть электронная почта:
<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>
Попробуй сам " Форма государства и Положение входа
AngularJS постоянно обновляет состояние как формы, так и полей ввода.
Поля ввода имеют следующие состояния:
-
$untouched
Поле еще не прикоснулся -
$touched
поле была затронута -
$pristine
Поле еще не изменен -
$dirty
поле было изменено -
$invalid
Содержимое поля не является действительным -
$valid
Содержание поля является действительным
Они все свойства поля ввода, и являются либо true
или false
.
Формы имеют следующие состояния:
-
$pristine
Никакие поля пока не изменен -
$dirty
Один или несколько были изменены -
$invalid
Содержание формы не является действительным -
$valid
Содержание формы действительна -
$submitted
форма была отправлена
Они все свойства формы, и являются либо true
или false
.
Вы можете использовать эти состояния, чтобы показать значимые сообщения пользователю. Например, если требуется поле и пользователь оставляет его пустым, вы должны дать пользователю предупреждение:
пример
Показать сообщение об ошибке, если поле была затронута и пуста:
<input name="myName" ng-model="myName" required>
<span ng-show="myForm.myName.$touched
&& myForm.myName.$invalid">The name is required.</span>
Попробуй сам " CSS классы
AngularJS добавляет классы CSS для форм и полей ввода в зависимости от их состояния.
Следующие классы добавляются или удаляются из, поля ввода:
-
ng-untouched
поле еще не прикоснулся -
ng-touched
поле была затронута -
ng-pristine
Поле еще не изменен -
ng-dirty
поле было изменено -
ng-valid
Содержание поле действительно -
ng-invalid
Содержание поле не действует -
ng-valid- key
Один ключ для каждой проверки. Пример:ng-valid-required
окончанияng-valid-required
, полезно , когда есть больше чем одна вещь , которая должна быть подтверждена -
ng-invalid- key
- Пример:ng-invalid-required
Следующие классы добавляются или удаляются из, форм:
-
ng-pristine
Никакие поля не до сих пор не изменен -
ng-dirty
Одно или несколько полей были изменены -
ng-valid
Содержание формы действительна -
ng-invalid
Содержание форма не действительна -
ng-valid- key
Один ключ для каждой проверки. Пример:ng-valid-required
окончанияng-valid-required
, полезно , когда есть больше чем одна вещь , которая должна быть подтверждена -
ng-invalid- key
- Пример:ng-invalid-required
Классы будут удалены , если значение они представляют это false
.
Добавьте стили для этих классов, чтобы дать вашему приложению лучше и более интуитивный пользовательский интерфейс.
пример
Применение стилей, используя стандартные CSS:
<style>
input.ng-invalid {
background-color: pink;
}
input.ng-valid {
background-color: lightgreen;
}
</style>
Попробуй сам " Формы могут быть также стиле:
пример
Применение стилей для немодифицированных (нетронутых) форм, а также для модифицированных форм:
<style>
form.ng-pristine {
background-color: lightblue;
}
form.ng-dirty {
background-color: pink;
}
</style>
Попробуй сам " Пользовательские проверки
Для того, чтобы создать свою собственную функцию проверки является немного более сложным. Вы должны добавить новую директиву к вашему приложению, и иметь дело с проверкой внутри функции с определенными указанными аргументами.
пример
Создайте свою собственную директиву, содержащую пользовательскую функцию проверки, и ссылаться на него, используя my-directive
.
Поле будет только справедливо, если значение содержит символ "е":
<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>
Попробуй сам " Пример Разъяснения:
В HTML, новая директива будет называться с помощью атрибута my-directive
.
В JavaScript мы начинаем, добавив новую директиву под названием myDirective
.
Помните, что при именовании директиву, вы должны использовать имя ГорбатыйРегистр, myDirective
, но при вызове, вы должны использовать -
отдельное название, my-directive
.
Затем, возвращает объект , где вы указываете , что мы требуем ngModel
, которая является ngModelController.
Сделать функцию связывания , которая принимает некоторые аргументы, где четвертый аргумент, mCtrl
, является ngModelController
,
Затем указать функцию, в данном случае с именем myValidation
, который принимает один аргумент, этот аргумент является значением входного элемента.
Тест , если значение содержит букву "е", а также установить срок действия контроллера модели либо true
или false
.
В конце концов, mCtrl.$parsers.push(myValidation);
Добавит myValidation
функцию массив других функций, которые будут выполняться каждый раз при изменении входного значения.
Валидация Пример
<!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>
Попробуй сам " ![]() | Атрибут форма NOVALIDATE HTML используется для отключения проверки браузера по умолчанию. |
---|
Пример Разъяснения
Директива AngularJS нг-модель связывает входные элементы модели.
Объект модель имеет два свойства: пользователь и адрес электронной почты.
Из - нг-шоу, пролеты с цветом: красный отображаются только тогда , когда пользователь или электронная почта $ загрязнен и $ недействителен.