前提・実現したいこと
boxA、boxBそれぞれのdivにあるtextareaに入力した内容が、相互に反映されるようにしたいと思っています。
具体的には、以下のようなことを実現したいと思っております。
・boxAのtextareaに入力したテキストを、/\n\n/gで分割した上で、boxBのtextareaに表示
・boxBのtextareaで編集したテキストを、再度/\n\n/で結合し、boxAのtextareaに表示
なぜ下記のコードで上手くいかないのか、その原因と対応策をご教示頂ければ幸いです。
発生している問題
boxAからboxBへの反映は上手くいくのですが、boxBでテキストを編集してもboxAに反映されません。
Chromeのdeveloper toolで見ると、html上は反映されているように見えるのですが、画面では何も変化がないようです。
該当のソースコード
javascript
1<!DOCTYPE html> 2<html> 3 <head> 4 <meta charset="UTF-8" /> 5 <title>my Memo's Pad</title> 6 <link rel="stylesheet" href="css/reset.css" /> 7 <link rel="stylesheet" href="css/style.css" /> 8 </head> 9 <body> 10 <div id="boxA"><textarea id="boxAInput"></textarea></div> 11 <div id="boxB"></div> 12 13 <script src="js/jquery-2.1.3.min.js"></script> 14 <script> 15 $(function() { 16 "use strict"; 17 18 let paragraphs; 19 let regExp = /\n\n/g; 20 21 $("#boxAInput").on("input", function() { 22 let input_text = $("#boxAInput").val(); 23 paragraphs = input_text.split(regExp); 24 25 $("#boxB").html(""); 26 for (let i = 0; i < paragraphs.length; i++) { 27 $("#boxB").append( 28 '<textarea class="boxBTextarea">' + paragraphs[i] + "</textarea>" 29 ); 30 } 31 }); 32 33 $("#boxB").on("input", function() { 34 let updatedText = ""; 35 $("#boxAInput").html(""); 36 37 $(".boxBTextarea").each(function(i, o) { 38 updatedText += $(o).val() + "\n\n"; 39 }); 40 $("#boxAInput").html(updatedText); 41 }); 42 }); 43 </script> 44 </body> 45</html> 46
試したこと
inputイベントを、#boxBではなく.boxBTextareaにしてみたり、#boxAに書き込む前に$("#boxA).off()でイベントを削除したりなどしてみたのですが、どれも上手く行きませんでした。
補足情報(FW/ツールのバージョンなど)
初心者のため、至らない点もあるかと思いますが、どうぞ宜しくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/25 21:40
2019/10/26 11:35
2019/10/29 09:10