私は、長さとコンテキストに基づいて、使用できるユーザー名に関してユーザーを幾分制限しようとしています。禁止された単語が入力された場合、どのようにユーザーを赤で捕まえるのですか?
ここでは、ユーザーが現在のテキストボックスを離れるときに禁止された単語が見つかると、ユーザー名ラベルを赤色にしようとしています。
コードは私にとってはうまく見えますが、他の基準が満たされていれば、禁止された単語を完全に無視して、ラベルを緑色にしているようです。私のコードで何が間違っていますか?
var username = document.forms.LogInForm.username;
username.onblur = function() {
var forbiddenWords = ["fff, dddd, aaa, rrrr, oooo"];
var regex;
var username_value = this.value.split('');
for (var a = 0; a < forbiddenWords.length; a++) {
regex = new RegExp('\\b' + forbiddenWords[a] + '\\b');
if (username_value[username_value.length - 1] === "-" || username_value[username_value.length - 1] === "_") {
console.log('Username cannot end in dash (-) or underscore (_). We removed it for you!');
this.value = this.value.slice(0, -1);
}
else if (this.value.length < 4) {
console.log('Username cannot be less than 4 characters');
document.getElementById('username_label').style.color = "red";
}
else if (username.value.search(regex) >= 0) {
console.log('Username contains swearing word. Please, remove it');
document.getElementById('username_label').style.color = "red";
}
else {
document.getElementById('username_label').style.color = "green";
}
}
};
基本的なロジックの欠陥のように見えますが、インスタンスが最後に失敗してから最後に失敗した場合は追跡できません。スタイルは最後のインスタンスのみに依存します – charlietfl