我正在构建一个应用程序,当用户在输入框中输入无效值时,我想显示一些错误。如果未找到错误,则将正确的值作为“条目”附加到div。总共有3种情况需要显示错误:
这些错误与if else
语句一起显示。
1.和2.很容易,但问题情况(3.)仅对类.cat_entry
的第一个元素进行验证。
if(cat_input == '') { // generate errors
errorDisplay(error_input_empty);
} else if(!isNaN(cat_input)) {
errorDisplay(error_input_number);
} else if($('.cat_entry') == cat_input) { // THIS IS THE PROBLEMATIC LINE
// .cat_entry is the class of the entries that have been appended
errorDisplay(error_duplicate);
} else {
// stuff
};
所以我相信我需要一个for循环/ .each()(到目前为止没问题),但是如何将它作为if语句中的条件包含在内?像... if( for(i=0;i<$('.cat_entry').length;i++) { ... };
...当其中一个条目与输入值匹配时,如何返回true(或类似的东西),然后将返回值传递给if语句?
编辑: here是一个带有相关代码的jsFiddle。我使用$ .inArray()方法更新它。我想尝试使用它而不是for / .each()循环。
答案 0 :(得分:0)
你可以试试这个:
var a=$('.cat_entry'),o={};
for(i=0;i<a.length;i++) {
var s=a[i].val();
if(s in o){
errorDisplay(error_duplicate);
return;
}
o[s]=true;
}
或
var o={};
$('.cat_entry').each(function(){
var s=$(this).val();
if(s in o){
errorDisplay(error_duplicate);
return;
}
o[s]=true;
}
答案 1 :(得分:0)
您实际上可以使用jQuery inArray
函数,例如:
else if($.inArray(cat_input, $('.cat_entry') != -1)
}
答案 2 :(得分:0)
解决方案是将其添加到函数中:
var isDuplicate = false;
$('.cat_entry').each(function() {
if(!$(this).text().indexOf(cat_input)) {
isDuplicate = true;
}
// And in the if else loop:
else if(isDuplicate == true)
//and just before the function ends
isDuplicate = false;
感谢所有人提供的帮助。