我试图根据长度和上下文来限制用户可以使用的用户名。
在这里,当用户离开当前文本框时发现禁用词时,我尝试将用户名标签设为红色。
虽然代码对我来说看起来很好,但它似乎完全忽略了禁止的单词,并且如果满足其他条件,无论如何都会使标签变为绿色。我的代码有什么问题吗?
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";
}
}
};
最佳答案
var forbiddenWords = ["fff, dddd, aaa, rrrr, oooo"];
很可能是一个错误,应该阅读
var forbiddenWords = ["fff", "dddd", "aaa", "rrrr", "oooo"];
您需要一个单独字符串的数组,而不是包含包含一些逗号和空格作为内容的字符串的单元素数组。
关于javascript - 如果用户输入了禁用词,如何当场抓获?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37380598/