###実現したいこと
名前とコメントのNGワードを伏字にしたい。
###発生している問題
名前とコメント両方にNGワードがある時に置換出来ない事があります。
###該当のソースコード
html
1<form name="combox" accept-charset="UTF-8" method="post"> 2 <a>[お名前]</a><br> 3 <input type="text" name="お名前" value="名無し"><br> 4 <a>[コメント]</a><br> 5 <textarea name="コメント"></textarea><br> 6 <br> 7 <button name="submit" onclick="return func();">書き込む</button> 8</form>
js
1function func() { 2 //NGワード設定 3 var ngword = /(ab|de|gh)/g; 4 var errflg = 0, 5 caution = "", 6 ngname = "<!>[お名前]にNGワードが含まれていた為「名無し」さんに変更されます。\n", 7 ngkome = "<!>[コメント]にNGワードが含まれていた為***に置換されて投稿されます。\n", 8 kakunin = "以上の内容で投稿されます。宜しければ「OK」のボタンを押してください。", 9 val = ""; 10 for(var i = 0; i < combox.length; i++){ 11 val = combox.elements[i].value; 12 //未入力チェック 13 if(combox.elements[i].name != "submit"){ 14 if(val == ""){ 15 caution = caution + "<!>[" + combox.elements[i].name + "]" + "が未入力です。\n"; 16 errflg = 1; 17 //NGワードチェック 18 }else if(ngword.test(val)){ 19 //置換処理 20 if(combox.elements[i].name == "お名前"){ 21 caution = caution + ngname; 22 val = "名無し"; 23 }else{ 24 caution = caution + ngkome; 25 val = val.replace(ngword, r =>"*".repeat(r.length)); 26 } 27 } 28 } 29 //チェック後の再格納 30 combox.elements[i].value = val; 31 } 32 //未入力警告及び確認画面 33 var name = document.combox.お名前.value, 34 kome = document.combox.コメント.value, 35 zenbu = "[お名前]\n" + name + "さん\n\n" + "[コメント]\n" + kome + "\n\n"; 36 thanks = "以上の内容で書き込みました。コメントありがとうございます。" 37 if(errflg == 1){ 38 alert(zenbu + caution); 39 return false; 40 }else if(window.confirm(zenbu + caution + kakunin)){ 41 //JSONファイルへ書き込み処理を設置予定 42 alert(zenbu + thanks); 43 return true; 44 } 45 return false; 46}
###試したことなど
1:<名前ab コメントab>
名前のみ置換されてコメントが置換されない
2:<名前ab コメントabcde>
両方置換される
3:<名前NG以外 コメントab>
コメントが置換される
など色々なパターンを試してい見たのですが、何故3では置換されるtrueルートへ行くのに、1の時にコメントが置換されるtrueのルートへ行かないのかがわかりません。
また、2のようにNGワードが2つ以上あると両方置換されるなど他のパターンでも良くわからない動きをする事がありました。
if(ngword.test(val))の箇所が良くないのかなと思うのですが、何が問題なのかわかりませんでした。
つきましては、問題個所の指摘や検索ワード等ヒントやアドバイスを頂けると助かります。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/12/09 15:33
2017/12/09 16:16
退会済みユーザー
2017/12/10 09:50