如果不是警报,则查看输入是否匹配数组

时间:2013-06-10 01:50:24

标签: javascript jquery arrays matching

var tagAllowed = true;
var allowedTags =["Person","People","Dance","Word"];
 if(tagAllowed === true) {
  for(var i=0;i<allowedTags.length;i++){
             var aTags = allowedTags[i];
     if(input.val().toLowerCase() === aTags.toLowerCase()) {
       tagged.append('<span unselectable="on" class="tagged '+colorize+'" title="Click To Delete">'+inputVal.trim()+'</span>');
       tagSize = $('.tagged').length;
       var ele = $('.tagged').last(),
       subtract = parseInt(ele.outerWidth(true),10);
       input.width(input.width() - subtract);
       tagged.width(tagged.width() + subtract);
       input.css('marginLeft','5px');
       input.val("");
       input.css('color','#000');
       } else {
                  errorMess.children('span').remove();
                  errorMess.prepend('<span>'+errorProcess+'<span>');
                  errorMess.slideDown();
       }
    }

以下代码在某种程度上起作用,如果input.val()不匹配,它将显示自定义警报errorMess,即使单词匹配,它仍会显示自定义警报。我想知道我是否在我的条件中做错了。因为如果单词匹配,我不需要显示自定义提醒。

如有任何建议请发帖。我知道这不仅仅是代码的最好例子,但我希望你们所有人都能得到我想说的话。如果两个单词匹配在一起,我就不希望出现自定义提醒。

2 个答案:

答案 0 :(得分:1)

你在for循环中有if语句。输入值永远不会超过阵列中的一个标签。您可以使用for循环来设置布尔值。然后if语句可以跟在for循环中。

boolean isAllowedTag = false;
for(var i=0;i<allowedTags.length;i++){
     var aTags = allowedTags[i];
     if(input.val().toLowerCase() === aTags.toLowerCase()) {
         isAllowedTag = true;
         break;
    }
}
if (isAllowedTag) {
      // ...
   } else {
        errorMess.children('span').remove();
        errorMess.prepend('<span>'+errorProcess+'<span>');
        errorMess.slideDown();
   }
}

答案 1 :(得分:0)

break;行之后添加input.css('color, '#000');。另外,您应该将最后3行更改为:input.val("").css({marginLeft:'5px', color:'#000'});。拨打.css()的速度很慢,所以最好在一次通话中尽可能多地做。