ParsleyJS自定义验证在AngularJS中不起作用

时间:2015-02-24 14:12:31

标签: angularjs validation parsley.js

我想要实现的是为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,我的自定义验证器永远不会触发。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我更新了这样的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ı'
 }
}
};