2016-09-14 12 views
2

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.'); 
      } 
     } 
    }); 
}); 
+0

を行いその後、あなたはどこのテキストのすべての要素をターゲットにしない理由入力できますか?たとえば、input、textarea、contenteditable divsなど – Li357

+1

どうすればよいですか?これはおそらく '( 'input'、 'textarea')' – GVS

+0

です。以下はその例です:https://jsfiddle.net/wonpmquw/ – Li357

答えて

2

の回答。しかし、動的に生成された入力にも機能させたい場合は、関数を少し変更する必要があります。

これは、動的に生成された入力Demo

$('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."); 
     } 
    } 
}); 

を上で動作しません。しかし、これはDemo

$(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."); 
     } 
    } 
}); 
0

良いアプローチで、適切な方法で進めています。

$(function() {匿名関数を追加しますが、手で呼び出す必要があります(名前のない関数を呼び出すのは困難です)。より良い使用:$(document).ready(function() {文書が準備ができたら、この無名関数を呼び出すように文書に指示しました。

$('#input')は、ìd == #inputのすべての要素を選択します。これはあなたが望むものではありません。すべてのinput要素を選択したい(id-selector #を削除する)。 BTW:.someClassは、class == someClassですべての要素を選択します。

$(this).val().toLowerCase() == triggerWords[i]テストの場合ブロックされた単語の1つが入力されます。それはまったく問題ありませんが、タイプがstringの場合は、のいずれかの単語が好きだと思います。すべて一緒に$(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."); 
      } 
     } 
    }); 
}); 

最後に一つ、あなたはのJSのバージョンを使用することができるため、それぞれこのような:だけでなく、単一の入力のための作業上記

for(var word in triggerWords){ 
    if($(this).val().toLowerCase().indexOf(word) != -1) {...} 
} 
+0

'$(function(){'は '$(document).ready(function {){ 'それはちょうどショートカットです – Weedoze

+1

ああ、私も今日何かを学ぶ:)ありがとう – Marcus

関連する問題