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、単語が一致してもカスタム アラートが表示されます。条件付きで何か間違ったことをしているのだろうかと思っています。単語が一致した場合にカスタム アラートを表示する必要がないためです。

提案があれば投稿してください。これがコードだけの最良の例ではないことは承知していますが、皆さんが私の言いたいことを理解してくれることを願っています。2 つの単語が一致する場合にカスタム アラートを表示したくないだけです。

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;行の後に a を追加しますinput.css('color, '#000');。また、最後の 3 行を次のように変更する必要がありますinput.val("").css({marginLeft:'5px', color:'#000'});。.css() の呼び出しは遅いため、1 回の呼び出しでできるだけ多くのことを行うことをお勧めします。

于 2013-06-10T02:01:52.873 に答える