タイトル通りです。
jQueryでHTMLのtextarea要素のrows属性の値を、動的に書き換える方法を教えてください。
実装したいのは、LINEのようなイメージです。
rowsは1から始まり、改行は3行まで(つまりrows=3まで)で、4行以降の行からスクロールバーが表示されるような仕組みです。
行を増やす処理は上手く行ったのですが、行の1文字目まで消すと行が減るようにしたいです。
やり方をご教授願いたいです。
以下、コードを記載いたします。
HTML
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4<meta charset="utf-8"> 5<link rel="stylesheet" href="styles.css"> 6<title></title> 7</head> 8<body> 9<form method="post"> 10 <textarea class="input_comment" rows="1"></textarea> 11 <input type="submit" value=" 書き込む" class="fas"> 12</form> 13</body> 14</html>
CSS
1body { 2 background-color: #ccc; 3} 4 5form { 6 display: flex; 7} 8 9textarea.input_comment { 10 font-size: 18px; 11 padding: 10px; 12 border-radius: 3px; 13 border-right:none; 14 border-left:none; 15 border-top:none; 16 outline: none; 17 resize: none; 18} 19 20input[type="submit"].fas { 21 background: #CC3366; 22 color: #FFDDFF; 23 padding: 10px 5px; 24 align-items: center; 25}
jQuery
1 2$(function() { 3 let default_row = $('textarea.input_comment').attr("rows") 4 $('textarea.input_comment') 5 .on('change keyup keydown paste cut', function(){ 6 while ($(this).outerHeight() < this.scrollHeight) { 7 if ($(this).attr("rows") == 3) { 8 break; 9 } 10 $(this).attr("rows", default_row++) 11 } 12 }); 13});
これで行を増やす処理は上手く行ったのですが、行を減らす処理をどう書けばよいのかわかりません。
ご教授いただけますと助かります。
どうかよろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/04 00:18