Проверка электронной почты md-chip

Проверка электронной почты 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;
    }
};

"директива ng-keypress вызывается всякий раз, когда я что-то печатаю" - когда вы хотите, чтобы это было подтверждено?

Llama 19.10.2018 14:35

@John Каждый раз, когда я создаю фишки

Bruno Souza 19.10.2018 14:36

Я не могу вспомнить, как работают md-chip, но не могли ли вы проверить, когда пользователь нажимает клавишу ввода?

Llama 19.10.2018 14:38

Хорошо, я изменю выражение своего лица.

Bruno Souza 19.10.2018 14:38

Это я хочу проверять всякий раз, когда пользователь нажимает ввод

Bruno Souza 19.10.2018 14:39

Вы должны взглянуть на этот angular.io/guide/form-validation и это для живого примера stackblitz.com/angular/bxvldvkjeav. Также вы можете использовать функцию тайм-аута, пока метод не будет запущен.

itwolfpower 19.10.2018 14:40

Мое решение заключалось в следующем: создать функцию javascript, в которой я оцениваю, был ли введен ENTER, и использую регулярное выражение ('/^[_a-z0-9pting+(\.[_a-z0-9] ]+)*@[a- z0 (9)] + (\. [A-z0-9 -] +) * (\. [Az] {2,4}) $ / '), проверка выполняется методом test ().

Bruno Souza 21.06.2019 19:02
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
7
737
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы должны использовать директиву 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>                                    

Другие вопросы по теме