为输入字段组合多个验证

时间:2018-08-02 20:41:08

标签: javascript jquery forms validation

我有一个带有动态创建字段的表单(name1是初始字段,其他字段是动态的),我正在使用jquery验证,并且已经在使用jQuery.validator.addMethod进行正则表达式验证。

我在添加其他验证以检查唯一值时遇到麻烦。

 <input class="enter" name="name1" id="name1" type="text"> 
 <input class="enter" name="name2" id="name2" type="text">  
 <input class="enter" name="name3" id="name3" type="text">  

谢谢

1 个答案:

答案 0 :(得分:0)

您可以将input的所有值放入一个数组中,并检查在keyup事件中它们是否相同。

<input class="enter" name="name1" id="name1" type="text"><p/> 
<input class="enter" name="name2" id="name2" type="text"> 
<p/>
<input class="enter" name="name3" id="name3" type="text">  
<script>
var inputs = document.querySelectorAll('input.enter');
for(let i = 0; i < inputs.length; i++){
  inputs[i].onkeyup = function(e){
    var arr = [];
    inputs.forEach(function(i){
      arr.push(i.value);
    });
    var duplicates = getDuplicates(arr);
    for(var key in duplicates){
      alert("Values must be unique");
      this.value = "";
    }
  }
}
function getDuplicates(arr) {
    var duplicates = {};
    for (var i = 0; i < arr.length; i++) {
        if(arr[i].trim().length){
        if(duplicates.hasOwnProperty(arr[i])) {
            duplicates[arr[i]].push(i);
        } else if (arr.lastIndexOf(arr[i]) !== i) {
            duplicates[arr[i]] = [i];
        }
        }
    }

    return duplicates;
}
</script>