javascript - 如果用户输入了禁用词,如何当场抓获?

标签 javascript

我试图根据长度和上下文来限制用户可以使用的用户名。

在这里,当用户离开当前文本框时发现禁用词时,我尝试将用户名标签设为红色。

虽然代码对我来说看起来很好,但它似乎完全忽略了禁止的单词,并且如果满足其他条件,无论如何都会使标签变为绿色。我的代码有什么问题吗?

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/

相关文章:

javascript - 如何将Set转换为带空格的字符串?

javascript - 无法真正调整 Canvas 图像的大小

javascript - 在javascript中获取被点击的元素ID

javascript - 加载页面后如何在Angular 4中获取(DOM)元素的宽度

javascript - 我的 javascript 函数返回值时出现问题

javascript - JQuery 移动版。无法以编程方式打开对话框;尝试了我能想到的一切

javascript - 自定义输入类型=文件行为

javascript - 将 PartialView 的 javascript 放在页面上的特殊位置

javascript - 主干 - 将 JSON 加载到集合中不会在 View 中呈现

javascript - 无法从 CosmosDB 中删除项目