angularjs - 定期验证的 Angular 电子邮件自定义

标签 angularjs

我需要执行两个步骤才能验证电子邮件。 首先我想使用 Angular

 type="email"

为了检查电子邮件的有效性,我想使用自定义指令将此电子邮件发送到服务器以在那里执行一些检查。

自定义验证指令代码:

angular.module('app.register')
.directive('emailAvailable',['registerResource', function(registerResource) {
return {

    restrict: 'A',

    require: 'ngModel',

    link: function(scope, element, attr, ctrl) {
        function customValidator(ngModelValue) {
            registerResource.emailAvailable.save({"email": ngModelValue},
                function(response){
                    // Show that email is valid
                },
                function(response){
                   // Show that email is not valid
                });
            return ngModelValue;
        }
        ctrl.$parsers.push(customValidator);
    }
};

我的问题是如何在检查 Angular type="email"的有效性后执行我的 customValidator 函数。

最佳答案

使用自定义验证器,您可以执行以下操作:

  var app = angular.module('form-example1', []);
  // only allows e-mail from google
  var EMAIL_REGEXP = /^[a-z0-9](\.?[a-z0-9]){5,}@g(oogle)?mail\.com$/;
  app.directive('email', function() {
    return {
      require: 'ngModel',
      link: function(scope, elm, attrs, ctrl) {
        ctrl.$validators.email = function(modelValue, viewValue) {
          if (ctrl.$isEmpty(modelValue)) {
            // consider empty models to be valid
            return true;
          }

          if (EMAIL_REGEXP.test(viewValue)) {
            // it is valid
            return true;
          }

          // it is invalid
          return false;
        };
      }
    };
  });

Working example here .

关于angularjs - 定期验证的 Angular 电子邮件自定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31109338/

相关文章:

javascript - 如何通过AngularJS删除一项?

angularjs - Bower 安装 Angular-Touch 没有给我最新版本

javascript - 试图多次加载 Angular

javascript - 我可以制作一个由多个过滤器组成的 angularJS 过滤器吗?

javascript - 无法加载模块

javascript - 强制前端的 http 请求超时

html - 如何在html文档中连接字符串

javascript - 如何将 ng-option 模型设置为对象的值?

javascript - Angular Directive(指令)未加载

angularjs - Angular - 从标记更改状态