0
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,即使单词匹配它仍然显示自定义警报。我想知道我是否在条件句中做错了什么。因为如果单词匹配,我不需要出现自定义警报。

如果有任何建议,请发表。我知道这不是仅使用代码的最佳示例,但我希望你们所有人都能明白我想说的话。如果两个单词匹配,我只是不希望出现自定义警报。

4

2 回答 2

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();
   }
}
于 2013-06-10T02:03:55.840 回答
0

break;在您的input.css('color, '#000');行后添加一个。另外,你真的应该把最后 3 行改成:input.val("").css({marginLeft:'5px', color:'#000'});. 调用 .css() 很慢,所以最好在一次调用中尽可能多地完成。

于 2013-06-10T02:01:52.873 回答