Проверка электронной почты md-chip
Как создать email-валидацию для md-chip? Мое выражение ниже не работает, поскольку директива ng-keypress вызывается всякий раз, когда я что-то печатаю.
Предложения?
<div class = "row">
<div class = "col-md-12" ng-cloak = "">
<md-context class = "md-padding">
<md-chips md-separator-keys = "ctrl.customKeys" ng-keypress = "ctrl.validateEmail()" ng-model = "ctrl.ConfiguracaoRegra.Emails" md-max-chips = "20" placeholder = "Inserir um email..." ng-required = "true" type = "email"></md-chips>
</md-context>
</div>
</div>
vm.validateEmail = function (keyEvent) {
var emailValue = angular.element(".md-input").val();
var reg = /^[_a-z0-9]+(\.[_a-z0-9]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/;
if (reg.test(emailValue)) {
vm.isEmailValid = true;
} else {
vm.isEmailValid = false;
}
};
@John Каждый раз, когда я создаю фишки
Я не могу вспомнить, как работают md-chip, но не могли ли вы проверить, когда пользователь нажимает клавишу ввода?
Хорошо, я изменю выражение своего лица.
Это я хочу проверять всякий раз, когда пользователь нажимает ввод
Вы должны взглянуть на этот angular.io/guide/form-validation и это для живого примера stackblitz.com/angular/bxvldvkjeav. Также вы можете использовать функцию тайм-аута, пока метод не будет запущен.
Мое решение заключалось в следующем: создать функцию javascript, в которой я оцениваю, был ли введен ENTER, и использую регулярное выражение ('/^[_a-z0-9pting+(\.[_a-z0-9] ]+)*@[a- z0 (9)] + (\. [A-z0-9 -] +) * (\. [Az] {2,4}) $ / '), проверка выполняется методом test ().



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы должны использовать директиву ng-change вместо ng-keypress или объединить md-on-add и md-on-remove (см. https://github.com/angular/material/issues/3580#issuecomment-347052946)
Мое решение заключалось в следующем: создать функцию javascript, в которой я оцениваю, был ли введен ENTER, и использую регулярное выражение ('/^[_a-z0-9pting+(.[_a-z0-9*********************************************** (9)] + (. [A-z0-9 -] +) * (. [Az] {2,4}) $ / '), проверка методом test ().
function validateEmail(x) {
if (event.which === 13) {
var emailValue = x;
var reg = /^[_a-z0-9]+(\.[_a-z0-9]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/;
if (!reg.test(emailValue)) {
toastr.error("Digite um email válido!");
vm.ConfiguracaoRegra.Emails.pop();
}
};
};<md-chips md-on-add = "ctrl.validateEmail($chip)" ng-model = "ctrl.ConfiguracaoRegra.Emails" md-max-chips = "20" placeholder = "Inserir um email..." type = "email" required></md-chips>
"директива ng-keypress вызывается всякий раз, когда я что-то печатаю" - когда вы хотите, чтобы это было подтверждено?