问题描述
我想过滤掉不好的词,但我在让这段代码工作时遇到了问题。它适用于除此之外的所有其他文本区域。
经过大量的搜索,我发现这可能是因为这个 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' );