MD-chips电子邮件验证



Md-chips 电子邮件验证

如何为md芯片创建电子邮件验证?我下面的表达式不起作用,因为每当我键入某些内容时都会调用 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;
}
};

你 shuold 使用ng-change指令而不是ng-keypress,或者将md-on-addmd-on-remove组合在一起(见 https://github.com/angular/material/issues/3580#issuecomment-347052946(

我的解决方案是:创建一个 JavaScript 函数,在其中评估是否输入了 ENTER 并使用正则表达式 ('/^[_a-z0-9]+(.[_a-z0-9]+(*@[a-z0 (9(] + (.[A-z0-9 -] +( * (.[亚利桑]{2,4}( $/'(,通过测试 (( 方法进行验证。

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>

最新更新