Я имею простую форму, которую мне нужно проверить. Как я могу проверить его без кнопки (submit)?
<form name="myForm" novalidate>
<fieldset>
<legend>Info</legend>
<div>
<label for="name">Name:</label>
<input type="text" name="name" id="name" ng-model="myName" required/>
</div>
<div>
<label for="pass">Password:</label>
<input type="password" name="pass" id="pass" ng-model="myPass" required/>
</div>
<div>
<label for="email">Email:</label>
<input type="email" name="email" id="email" ng-model="myMail" required/>
</div>
<div>
<label for="birth">Date of birth:</label>
<input type="date" id="birth" name="birth" ng-model="date"/>
</div>
</fieldset>
</form>
По умолчанию проверка угловой формы будет срабатывать автоматически всякий раз, когда данные изменяются (независимо от модели или на основе прямого ввода пользователем), она не привязана к форме submit. Вы можете изменить, какие события запускают это, используя ng-model-options
, как в
<input ng-model-options="{
updateOn: 'default blur',
debounce: { default: 500, blur: 0 }
}" ...>
Если вам нужно создать свой собственный валидатор, добавьте его в ngModelController.$validators
$asyncValidators
или $asyncValidators
, например:
<input type="text" name="name" id="name" ng-model="myName" validatename required/>
app.directive('validatename', function() {
return {
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {
ctrl.$validators.validatename = function(modelValue, viewValue) {
if (ctrl.$isEmpty(modelValue)) {
return true;
}
if (viewValue === "Zuul") {
return true;
}
return false; // There is no Dana only Zuul
};
}
};
});
Я считаю, что вы также можете инициировать валидацию программным путем, вызывая $validate()
но это редко необходимо.