こういった場での質問になれていない為不備があればすみません。
概要
textareaに付加している行数・一行あたりの文字数制限について、2点の意図しない動作があり修正できず困っています。
できればIE11でも意図通りに動くようにしたいですが、最悪Chromeなどのモダンブラウザのみでも動くようになって欲しいです。
処理内容
textareaに4行まで・一行あたり65文字まで入力可能な制限を掛ける
意図しない動作①
何行か入力したあと、途中の行で改行をしても末尾の改行になってしまう
意図しない動作②
半角モード時に改行をすると、4行未満でも改行が削除されてしまう
ソース、デモ
html
1<textarea id="area" rows="4" cols="65"></textarea>
javascript
1(function() { 2 'use strict'; 3 const sliceText = function(e) { 4 let lines=this.textarea.value.split("\n"); 5 // 各行を指定した文字数に切り捨てる 6 for(let i=0; i<lines.length; i++){ 7 if(lines[i].length >this.len){ 8 lines[i]=lines[i].substr(0,this.len); 9 } 10 } 11 this.textarea.value = ""; 12 // 指定された行数までに切り捨てる 13 for(let j=0; j<this.row; j++){ 14 if(lines[j]){ 15 if(j > 0 && j < this.row) this.textarea.value+="\n"; 16 this.textarea.value+=lines[j]; 17 } 18 } 19 } 20 const textArea = document.querySelector('textarea[id*="area"]'); 21 const obj = {textarea: textArea, len: 65, row: 4, handleEvent: sliceText}; 22 textArea.addEventListener("keypress", obj); 23 textArea.addEventListener("focusout", obj); 24})();
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/18 03:02
2020/09/18 03:16