查看输入是否与数组匹配,如果不是警告

Seeing if input matches array if not alert

本文关键字:如果不 警告 数组 输入 是否      更新时间:2023-09-26
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,即使单词匹配,它仍然显示自定义警报。我想知道我是否在我的条件中做错了什么。因为我不需要在单词匹配时显示自定义警报。

如有任何建议请贴出。我知道这不是一个只有代码的最好的例子,但我希望你们都能明白我想说的。我只是不希望在两个单词匹配时出现自定义警告。

在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();
   }
}

input.css('color, '#000');行之后添加break;。此外,您应该将最后3行更改为:input.val("").css({marginLeft:'5px', color:'#000'});。调用.css()很慢,所以最好在一次调用中尽可能多地执行这些操作。