问题背景
一多行明细中某一列的值,不允许重复
错误示例:
var flag = false;
var ary = $("input[name=dNO]");
for(var i = 0; i < ary.length - 2; i++) {
for(var j = i+1; j < ary.length - 1; j++) {
if(ary[i].value == ary[j].value) {
flag = true;
}
}
}
if(flag == true){
alert("请检查是否存在两个相同的值!");
$("html,body").animate({scrollTop:0}, 500);
return false;
}
内层循环中j提示undefined
,js编译机制造成
详细请参考:
https://zhidao.baidu.com/question/1366893818772162859.html
现解决方法,通过排序数组查找重复项
var flagOfSame = false;
var msgOfSame = "存在相同值:";
var $ary = $("input[name=dNO]");
var ary = [];
for(var i = 0; i < $ary.length; i++) {
ary.push($ary[i].value);
}
var sortedAry = ary.sort();
for(var i = 0; i < sortedAry.length - 1; i++) {
if(sortedAry[i] == sortedAry[i + 1]) {
flagOfSame = true;
msgOfSame +=sortedAry[i]+" ";
}
}
if(flagOfSame == true){
alert(msgOfSame);
$("html,body").animate({scrollTop:0}, 500);
return false;
}