コード ```### 前提・実現したいこと テキストエリアに入力があった場合、全角でも半角でも1行あたり最大4文字で改行させたいです。 (※自分で改行した場合はその改行が反映される。) キー入力を契機にJavascriptで制御しようとしています。(他に方法があればどんな方法でも良いです。) 実現可能かどうかだけでもご教授いただける方がいらっしゃいましたら、お願いいたします。 0901追記 1行あたり4文字で改行 ⇒1行あたり最大4文字で改行 (※自分で改行した場合はその改行が反映される。) ### 発生している問題・エラーメッセージ 問題は2点あります。 1.全角文字の場合うまくいきません。 変換中など、入力が確定状態でない場合、改行は4文字でされますが改行前の入力がうまく改行後に引き継がれません。 2.キー入力を文の途中からはじめたり、文字を削除した場合はキー入力がうまくいきません。 (キーの位置は入力後、打ち終わった文字の直後。デフォルトのテキストエリアと、4文字改行以外は全く同じ仕様感にしたい) ### 該当のソースコード ```lang-HTML <!doctype html> <textarea id="tmp" name="tmp" rows="10" cols="20" style="overflow:auto" wrap="OFF"></textarea> <script type="text/javascript"> let area = document.getElementById('tmp'); area.addEventListener('input', kaigyo); function kaigyo() { var maxRow = 4; var lines = area.value.split("\n"); for(var i = 0; i < lines.length; i++) { if(lines[i].length > maxRow){ lines.push(""); var tmpMoji = lines[i+1]; lines[i+1] = lines[i].slice(maxRow) + tmpMoji; lines[i] = lines[i].slice(0, maxRow); } } area.value = lines.join("\n"); } </script> </html>
補足情報
ブラウザは何でも良いですが、IE、Edgeで当方は試しました。