所以基本上我有一个带有子数组的数组,看起来像这样
var test = [['code', 'name'], ['code', 'name'], ['code', 'name'], ['code', 'name'], ['code', 'name']];
我有一个输入。 单击提交后,我需要检查输入值是否已经在数组中,如果是,则显示错误消息。
我已经尝试过使用此代码,但它不起作用。它没有显示错误
var value = labelInput.val();
if(jQuery.inArray(value, test) !== -1) {
labelInput.addClass("sp-validation-error");
}
答案 0 :(得分:3)
只需遍历子数组并使用相同的方法:
var value = labelInput.val(),
found = false;
for (var i = 0; i < test.length; i++) {
if (jQuery.inArray(value, test[i])) {
alert('found!');
found = true;
break;
}
}
if (found) {
labelInput.addClass("sp-validation-error");
}
另见.indexOf
答案 1 :(得分:2)
已经有一个已经接受的答案了,我觉得有一种更加优雅的方式。
不是将数组连接到字符串并搜索该字符串,您也可以使用some
使用单行代码:
if (test.some(function(element) { return element.indexOf(value) !== -1 })) {
// do stuff
}
答案 2 :(得分:1)
您也可以采用以下方式进行无循环。
var value = labelInput.val();
if( test.join(",").match(new RegExp(value, "gi")) !== null ) {
labelInput.addClass("sp-validation-error");
}
注意:RegExp
比indexOf
慢一点。因此,您也可以使用:
if( test.join(",").indexOf(value) !== -1 ) {
labelInput.addClass("sp-validation-error");
}