如何在summernote textarea中使用坏词过滤器

问题描述

我想过滤掉不好的词,但我在让这段代码工作时遇到了问题。它适用于除此之外的所有其他文本区域。 经过大量的搜索,我发现这可能是因为这个 textarea 是用 summernote 的。
知道我该怎么办吗?
提前致谢!

<div class="form-group">
    <textarea rows="7" name="proposal_desc" placeholder="Въведете описание на предложението си" class="form-control proposal-desc"><?= $d_proposal_desc; ?></textarea>
</div>
<script>
$( document ).ready(function() {
    var triggerWords = ['badword1','badword2'];
    $(document).on('keyup','textarea',function() {
        for (var i = 0; i < triggerWords.length; i++) {
            if ($(this).val().toLowerCase().indexOf(triggerWords[i]) != -1) {
                alert("Alert! You've typed a blocked word.");
            }
        }
    });
});
</script>

解决方法

您可以混合使用纯 JS 来简化我们的代码。

const text = "I type badword1 word and will block."

const isBadWord = text.replace(/[\W_]+/g," ").split(' ').includes('badword1')
isBadWord ? alert('Bad word detected!') : null;

,

你可以试试:

var regex = new RegExp('\\b(' + badwords.join('|') + ')\\b','i' );