0

我正在构建一个应用程序,当用户在输入框中输入无效值时,我想在其中显示一些错误。如果未发现错误,则将正确的值作为“条目”附加到 div。总共有 3 种情况显示错误:

  1. 输入值为空
  2. 输入值是一个数字
  3. 输入值已存在

这些错误与if else语句一起显示。1.和 2. 很简单,但问题案例 (3.) 仅针对 class 的第一个元素进行验证.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 语句?

编辑: 是一个带有相关代码的 jsFiddle。我用 $.inArray() 方法更新了它。我想尝试使用它而不是 for / .each() 循环。

4

3 回答 3

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;
}
于 2013-05-05T15:50:41.727 回答
0

You can actually use the jQuery inArray function for this, such as:

else if($.inArray(cat_input, $('.cat_entry') != -1) 

}
于 2013-05-05T16:01:35.110 回答
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;

感谢大家提供的帮助。

于 2013-05-06T01:13:49.620 回答