我想使用此profanity filter动态过滤坏词。 api将改变" ass"到" ***"在给定的示例中,仅当文本在页面加载之前存在时。我希望它能够在输入时更改已识别的坏词,以防止有人通过我的联系表单发送顽皮的消息。
以下是我到目前为止所做的事情:
<div id="msg">
<textarea type="text" onkeypress="badFilter()" id="mess_box" name="cf_message" style="height:150px;" maxlength="500" placeholder="Message" ></textarea>
</div>
<script>
function badFilter() {
$typedText = $('#mess_box').val();
$typedText.profanityFilter({
customSwears: ['ass']
});
}
</script>
我认为&#39; onkeypress&#39;属性将强制脚本检查更新的textarea值,但事实并非如此。
帮助表示赞赏!
答案 0 :(得分:0)
我不知道插件是如何工作的,但是
$typedText = $('#mess_box').val(); <-= reading the value, storing a string
$typedText.profanityFilter({ <-- expects jQuery object of an element, you have a string
customSwears: ['ass']
});
应该是
$('#mess_box').profanityFilter(...);
答案 1 :(得分:0)
您正在将过滤后的值分配给变量,然后您没有使用它。
function badFilter() {
$typedText = $('#mess_box').val();
$typedText.profanityFilter({
customSwears: ['ass']
});
$('#mess_box').val($typedText);
}
最后一行将文本应用回输入框。
问题是您正在键入用户键入时输入元素的值。这样,如果用户在文本的中间键入(而不是在结尾),则会出现毛刺。
您可以创建一个由两个输入控件(一个隐藏,一个可见)组成的系统,其中用户键入一个(隐藏),审查文本显示在可见文本中。当用户将光标定位在可见控件中时,您可以将其放置在不可见控件中的相同字符上。在用户写作时,更新可见控件的文本不会出现故障。
仅当profanityFilter可以使用字符串对象时,这才有效。 如果没有,初始化它的正确方法是
$('#mess_box').profanityFilter({
customSwears: ['ass']
});
答案 2 :(得分:0)
为了清除我的问题的模糊性,我正在使用的亵渎过滤器就是这个 - &gt; https://github.com/ChaseFlorell/jQuery.ProfanityFilter
根据我的理解(这不是很好),插件不是为了在输入时动态过滤单词,这可能需要Angularjs或更多DOM操作。
Vinko Bradvica提供了一个很好的解释并解决了这个插件,以便在输入错误的单词时动态审查。
答案 3 :(得分:0)
处理它的正确方法就是:
使用preg_match('/^.*\b2\b.*\b9\b.*$/mg', $wholeCsvFile);
<p>
标记
然后在JS文件中添加此代码:
style="visibility: hidden;"