- У меня есть форма с полем для пароля, для которого я внедрил директиву
password
. - В настоящее время я реализовал только 1 проверку, но у меня есть список проверок в поле.
- Я хочу, чтобы они отображались красным или зеленым цветом в зависимости от действительного/недействительного соответственно - когда пользователь начинает вводить текст в поле. Если пользовательский элемент управления выходит из коробки И все проверки пройдены, я хочу установить поле в действительное и установить его в нетронутое, чтобы список проверки не отображался.
Однако, если какая-либо проверка не удалась, я хочу, чтобы все они были видны, даже если поле не в фокусе. Ниже приведен фрагмент группы форм.Угловой наборPristine on ngBlur
<div class="form-group"> <label for="inputPass" class="col-sm-3 control-label text-sm text-left">Password</label> <div class="col-sm-9"> <input type="password" placeholder="Password" class="form-control" ng-model="registerAccount.password" required name="inputPass" id="inputPass" password ng-blur="form.inputPass.$invalid ? return: form.inputPass.$setPristine"> <div ng-show="form.inputPass.$dirty" class="help-block"> <p class="text-danger" ng-show="form.inputPass.$error.required"> Password is required. </p> <p ng-class="form.inputPass.$error.invalidLength ? 'text-danger' : 'text-success'"> Password should be atleast 8 characters. </p> </div> </div> </div>
Ниже моя директива
'use strict';
angular.module('nileLeApp')
.directive('password', function() {
return {
restrict: 'A',
require: 'ngModel',
link: function ($scope, $element, $attrs, ngModelCtrl) {
$scope.$watch($attrs.ngModel, function (value) {
if (value) {
var length = (value.length >= 8);
ngModelCtrl.$setValidity('invalidLength', length);
}
});
}
};
});
Когда фокус из поля, список проверки все еще показывает вверх. Я ожидал, что он будет скрыт, потому что поле настроено на нетронутое. Есть идеи ? Я хотел, чтобы это было похоже на поле пароля в https://dl.dropboxusercontent.com/u/636000/password_verification/index.html. Когда пользователь вводит пароль, валидации отражаются красным/зеленым цветом.
Спасибо, что сработал. Я думал() требуется для setPristine только в JS-функциях. Отработано больше часа. Это было некоторое время, когда я писал, используя Angular. – TechCrunch
@TechCrunch Это ** функция ** JS, которую вы вызываете в 'ng-blur';) –