У меня есть элемент ввода с двумя директивами (атрибутами) в нем. он добавляет ошибку класс, если вход недействителен.Несколько директив на элемент НЕ РАБОТАЕТ
<input required alpha type="text" name="firstName" ng-model="newUser.firstName" class="form-control" maxlength="30" placeholder="First Name" />
и это мои директивы
// SHOWS AN ERROR IF THE INPUT IS EMPTY
directives.required = function() {
return {
restrict: 'A',
link: function(scope, elem, attrs) {
elem.on('keyup', function(event) {
if(elem.val().trim() == '') {
elem.prop('title', 'This input is required!');
elem.addClass('error');
} else {
elem.prop('title', '');
elem.removeClass('error');
}
})
}
}
};
// SHOWS AN ERROR IF THE INPUT CONTAINS NON ALPHA CHARACTERS
directives.alpha = function() {
return {
restrict: 'A',
link: function(scope, elem, attrs) {
var regexp = /^[A-Za-z ñÑ]+$/;
var char;
elem.on('keyup', function(event) {
if(!regexp.test(elem.val())) {
elem.prop('title', 'This input can contain letters only!');
elem.addClass('error');
} else {
elem.prop('title', '');
elem.removeClass('error');
}
})
}
}
};
Но оно не делать то, что я ожидал. работает только одна директива! Когда я попытался удалить атрибут alpha, требуется сейчас работает! Может ли кто-нибудь сказать мне, почему это работает?
вы пробовали изменения имени класса «ошибка», например, в альфа-директивы? возможно, альфа-директива переписывает класс «ошибка» требуемой директивы или наоборот. – Ragnar
Я не знаю, почему он не работает (я не смотрел на него), но вы изобретаете колесо здесь. Посмотрите на встроенную директиву ввода и встроенный контроллер ngModelController/formController. – gkalpak
Не являются ли обработчики 'keyup' директив, которые собираются сжать друг друга в случае одной проходящей проверки и одной ошибки? – pdoherty926