Javascript 如何在键入特定单词时提醒用户

Javascript 如何在键入特定单词时提醒用户,javascript,jquery,Javascript,Jquery,我是Javascript新手,我正在创建我的第一个Chrome扩展。这真的只是个人的挑战 我想提醒用户,当他们在任何网站上键入某些单词时。可能是Google或Bing上的搜索输入字段,也可能是当他们输入Facebook状态时 我对Javascript不是很熟悉,所以这可能吗?经过反复试验,我提出了这个方法,但它只适用于网站上的特定输入字段 $(function() { var triggerWords = ['badword', 'wordbad']; $('#input').k

我是Javascript新手,我正在创建我的第一个Chrome扩展。这真的只是个人的挑战

我想提醒用户,当他们在任何网站上键入某些单词时。可能是Google或Bing上的搜索输入字段,也可能是当他们输入Facebook状态时

我对Javascript不是很熟悉,所以这可能吗?经过反复试验,我提出了这个方法,但它只适用于网站上的特定输入字段

$(function() {
    var triggerWords = ['badword', 'wordbad'];
    $('#input').keyup(function() {
        for (var i = 0; i < triggerWords.length; i++) {
            if ($(this).val().toLowerCase() == triggerWords[i]) {
                alert('Alert! You've typed a blocked word.');
            }
        }
    });
});
$(函数(){
var triggerWords=['badword','wordbad'];
$('#input').keyup(函数(){
for(var i=0;i
好办法,你走对了路

$(function(){
添加一个匿名函数,但您必须手动调用它(没有名称的函数很难调用:)。最好使用这个:
$(document)。ready(function(){
它告诉文档在文档准备好时调用这个匿名函数

$(“#input”)
d
=
#input
选择所有元素。这不是您想要的。您希望选择所有
input
元素(删除id选择器
)。顺便说一句:
。someClass
将选择所有
class
=
的元素

$(this).val().toLowerCase()==triggerWords[i]
测试是否只键入了一个被阻止的单词。这完全可以,但我认为您更希望键入的
字符串
包含一个单词。使用
$(this).val().toLowerCase().indexOf(triggerWords[i])!=-1

合计:

$( document ).ready(function() {
    var triggerWords = ['badword', 'wordbad'];
    $('input').keyup(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.");
            }
        }
    });
});

上面的答案适用于单个输入。但是,如果您希望函数也适用于动态生成的输入,则可能需要稍微更改函数

这对动态生成的输入不起作用()

$('input').keyup(函数(){
for(var i=0;i
但这确实是

$(文档).on('keyup','input',function()){
for(var i=0;i
那么为什么不将所有可以输入文本的元素作为目标呢?例如input、textarea、contenteditable divs,我该怎么做呢?像这样可能
('input','textarea')
这里有一个例子:你回答了我的问题。我如何关闭它?我建议使用input进行复制粘贴
$(函数(){
相当于
$(document).ready(function(){
。它只是一个快捷方式
for(var word in triggerWords){
  if($(this).val().toLowerCase().indexOf(word) != -1) {...}
}
$('input').keyup(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.");
        }
    }
});
 $(document).on('keyup', 'input', 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.");
        }
    }
});