我有一个带有动态创建字段的表单(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">
谢谢
答案 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>