微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何通过欧芹验证器检查所有输入是否彼此不同

如何解决如何通过欧芹验证器检查所有输入是否彼此不同

对不起,我是初学者*** 我有 6 个学童 ID,老师会放这个 ID 或不重要,但他必须至少放 1 个 .. 或者当他放更多一个时,它们必须彼此不同。

在这里使用 parsley.js 来验证我的测试:jsfiddle

我尝试检查 6 个以上的输入是否彼此不同 因为如果输入相同,则会在相似字段上显示一条消息 .. by parsley 和 jq 。 那是我所做的

    <form action="" id="homeform" method="POST" style="width: 100%;"  novalidate="novalidate">
  <input type="text" class="datac selector"  data-parsley-date="" name="m1" id="m1" />
 <input type="text" class="datac selector"  data-parsley-date="" name="m2" id="m2" />
 <input type="text" class="datac selector"  data-parsley-date="" name="m3" id="m3" />
 <input type="text" class="datac selector"  data-parsley-date="" name="m4" id="m4" />
 <input type="text" class="datac selector"  data-parsley-date="" name="m5" id="m5" />
 <input type="text" class="datac selector"  data-parsley-date="" name="m6" id="m6" />
    <button id="submit" type="submit">Check Out</button>

 </form>
<script type="text/javascript">

window.ParsleyValidator
    .addValidator(
        'date',function(value,requirements) {

    $(this).attr('value',$(this).val());
var values = []
$('.selector').each(function(){
if ($(this).val() != ''){
if(!values.includes(this.value)){
 values.push(this.value)
      return true;
         $(this).css("border-color",""); 
   }else{
    values.push(this.value)
    $(this).css("border-color","red");
      return false;

}   

}

});
},34
    )
    .addMessage('en','date',"Enter a valid date");
</script>

无论如何,我可以使用欧芹验证器对 JavaScript 进行 marge 吗?

解决方法

根据此处找到的详细信息,https://parsleyjs.org/doc/index.html#custom 以下示例应该有用。

.selector {
  display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/parsley.js/2.9.2/parsley.js" integrity="sha512-Fq/wHuMI7AraoOK+juE5oYILKvSPe6GC5ZWZnvpOO/ZPdtyA29n+a5kVLP4XaLyDy9D1IBPYzdFycO33Ijd0Pg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

<form id="homeform" action="" method="post">
  <p>Enter Dates</p>
  <div data-parsley-check-empty="1">
    <input type="text" class="datac selector" data-parsley-unique-date="" data-parsley-group="block-1" name="m1" id="m1" />
    <input type="text" class="datac selector" data-parsley-unique-date="" data-parsley-group="block-1" name="m2" id="m2" />
    <input type="text" class="datac selector" data-parsley-unique-date="" data-parsley-group="block-1" name="m3" id="m3" />
    <input type="text" class="datac selector" data-parsley-unique-date="" data-parsley-group="block-1" name="m4" id="m4" />
    <input type="text" class="datac selector" data-parsley-unique-date="" data-parsley-group="block-1" name="m5" id="m5" />
    <input type="text" class="datac selector" data-parsley-unique-date="" data-parsley-group="block-1" name="m6" id="m6" />
  </div>
  <button id="submit" type="submit">Check Out</button>
</form>
<script>
  window.Parsley.addValidator(
    'uniqueDate',{
      validateString: function(value) {
        var count = 0;
        $(".selector").each(function(i,el) {
          if (value === $(el).val()) {
            count++;
          }
        });
        return (count <= 1);
      },messages: {
        en: 'All dates must be Unique.',}
    }
  );

  window.Parsley.addValidator(
    'checkEmtpy',{
      messages: {
        en: 'You must fill in at least one of these dates!'
      },requirementType: 'integer',validate: function(_value,requirement,instance) {
        console.log("Group Validation");
        for (var i = 1; i <= requirement; i++) {
          if (instance.parent.isValid({
              group: 'block-' + i,force: true
            })) {
            return true; // One section is filled,this check is valid
          }
        }
        return false; // No section is filled,this validation fails
      }
    });

  var formInstance = $("#homeform").parsley({
      inputs: Parsley.options.inputs + ',[data-parsley-check-empty]'
    })
    .on('form:submit',function() {
      console.log("Submit Event");
      return false; // Don't submit form for this demo
    });
</script>

首先,您的语法不正确。 .addValidator() 似乎需要对应于数据属性的字符串和定义详细信息的对象。

您表示希望每个字段都具有唯一值。当验证器检查每个字段时,应该只有一个或更少的 value。我们假设失败并开始计数。然后我们迭代每个字段并将我们的 value 与每个字段的值进行比较,如果它们匹配则增加计数。我们知道它必须至少匹配其中之一,即我们正在验证的那个。如果 count 小于或等于 1,我们可以返回一个有效响应。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。