【问题标题】:ParsleyJS custom validation is not working in AngularJSParsleyJS 自定义验证在 AngularJS 中不起作用
【发布时间】:2015-02-24 14:12:30
【问题描述】:

我想要实现的是为 Parsley 编写一个自定义验证器,以验证输入中的多个电子邮件地址条目。

这是我的 HTML:

<input class="tags tags-email" type="hidden" value="" id="tags" data-validation-minlength="1" data-trigger="keyup" data-parsley-testmultiple/>

这是我的自定义验证器文件:

window.ParsleyConfig = {
  validators: {
    testmultiple: {
      fn:function(value) {
      console.log("OK");
      var re = new RegExp(/^regexText);
      var val = value.val();
      var tagsArray = val.split(',');
      var lastTag = tagsArray[tagsArray.length -1];

      console.log('keyup OK');

      if(!re.test(lastTag)) {
        return  false;
      }
      return true;
    }
  },
  priority: 32
},
messages: {
  testmultiple: "This value can not contain dollar sign ($)."
}

};

这是我正在烧欧芹的控制器:

function initUser() {
  $(".tags").select2({tags: frd.emailList, width: '100%'});
  $('form').parsley();
}

这是我的 index.html 文件,我在其中插入文件:

<script src="components/validation/bsa-validation.js" type="text/javascript"></script>
<script src="bower_components/parsleyjs/dist/parsley.js" type="text/javascript"></script>

我正在使用 AngularJS,而我的自定义验证器永远不会触发。有什么想法吗?

【问题讨论】:

    标签: angularjs validation parsley.js


    【解决方案1】:

    不要使用multiple,它已经被欧芹使用了。

    【讨论】:

    • 相应地编辑您的问题。控制台有错误吗?
    • 已编辑。控制台中没有错误。在开发者工具中调试时发现没有进入自定义验证器的功能。
    • 您的 html 中仍有data-multiple="3"。您的错误信息不对应
    【解决方案2】:

    我像这样更新了 html:(输入类型是“隐藏”破坏了逻辑)

    <input class="tags" type="text" value="" id="tags" data-parsley-tagsemailvalidation="2" data-parsley-trigger="change"/>
    

    我更新了自定义验证器:(自定义验证器命名很重要。不要使用 camelCase。所有名称必须小写。)

    window.ParsleyConfig = {
      validators: {
        tagsemailvalidation: {
        fn: function (value, requirement) {
        var re = new RegExp(/regexText/i);
    
        var returnValue = true;
        var tagsArray = value.split(',');
    
        //var lastTag = tagsArray[tagsArray.length -1];
    
        var index;
        for(index = 0; index < tagsArray.length; index++) {
          if(!re.test(tagsArray[index])) {
            returnValue = false;
    
            if(index == tagsArray.length - 1) {
              var tagsInput = $('.select2-search-field').prev();
              tagsInput.css('border', '1px solid red');
            }
          }
        }
    
        return returnValue;
      },
    
      priority: 32
    }
    },
     i18n: {
     en: {
      tagsemailvalidation: 'You have wrong email adresses. Please fix it'
     },
     tr: {
      tagsemailvalidation: 'Kırmızı olarak belirtilmiş eposta adresleri hatalı'
     }
    }
    };
    

    【讨论】:

      猜你喜欢
      • 2018-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多