代码之家  ›  专栏  ›  技术社区  ›  Vidya R

使用指令的角度自定义验证在ng-change中无法正常工作

  •  1
  • Vidya R  · 技术社区  · 2 年前

    我有一个使用指令的自定义验证器。im使用ng-change调用的方法显示验证。验证仅在第二次更改中显示。

      <textarea id="txtEmail" name="emailId" type="text" class="form-control" 
               ng-change="$ctrl.validateForm()" ng-model-options="{allowInvalid: true}" 
               validate-Email="$ctrl.emailId" 
               ng-model="$ctrl.emailId" disabled-exception aria-labelledby="Email">
      </textarea>
    

    这里validateEmail是使用regex验证电子邮件的指令。

    例如:test@gmail.co,在这种情况下,如果我删除最后一个字符“o”,它将不会显示错误验证。但如果我删除最后两个字符“co”,它将显示正确的验证。

    validateForm方法类似

             ` vm.validateForm = function () {
                    var errors = [];
                    angular.forEach(vm.form.$error, function (item, key: string) {
                    angular.forEach(item, function (errorField) {
                                        errors.push("Email Error");
                    }`
    

    要求解决方案正确显示验证。

    1 回复  |  直到 2 年前
        1
  •  1
  •   suman    2 年前

    首先编写如下函数

    vm.validate = function () {
        $timeout.cancel(callValidation);
        callValidation = $timeout(vm.validateForm, 1000);
    
    }
    

    然后调用“ vm.validate “文本区域中的函数,而不是” vm.validateForm ”。

    我希望这能解决你的疑问。