ちょっと小細工:textareaの高さを自動調節
改行入力なしでオートラップされた場合も自動調節してくれるとうれしいかな?と思ってちょっと小細工してみました。
■元ネタ
■元ネタ
元記事:textareaのサイズを入力にあわせて調整するJavaScript (イラストdeブログ開発記)■ソース
経由:404 Blog Not Found:javascript - 勝手に添削 - textareaの高さを自動調節
<script type="text/javascript">
function initResizeTextarea(textarea) {
if (!textarea||textarea._initResizeTextarea_) return;
textarea._initResizeTextarea_=true;
var offset=textarea.scrollHeight-textarea.offsetHeight;
var lastLength=textarea.value.length, initRows=textarea.getAttribute('rows');
if (isNaN(initRows)) initRows=3;
if (!window.opera) {
textarea.onkeyup=function(){
var rows=textarea.getAttribute('rows');
if (textarea.value.length<lastLength) {
while (textarea.scrollHeight-textarea.offsetHeight<=offset) {
textarea.setAttribute('rows',--rows);
if (rows<=initRows) break;
}
}
while (offset<textarea.scrollHeight-textarea.offsetHeight) {
textarea.setAttribute('rows',++rows);
}
lastLength=textarea.value.length;
};
}
else {
textarea.onkeyup=function(){
var lines=textarea.value.split('\n');
var len=(initRows<lines.length)?lines.length:initRows;
textarea.setAttribute('rows',len);
};
}
} // end of initResizeTextarea()
</script>
<textarea cols="64" rows="4" onfocus="initResizeTextarea(this)">
イチ
に
三
</textarea>
■サンプルfunction initResizeTextarea(textarea) {
if (!textarea||textarea._initResizeTextarea_) return;
textarea._initResizeTextarea_=true;
var offset=textarea.scrollHeight-textarea.offsetHeight;
var lastLength=textarea.value.length, initRows=textarea.getAttribute('rows');
if (isNaN(initRows)) initRows=3;
if (!window.opera) {
textarea.onkeyup=function(){
var rows=textarea.getAttribute('rows');
if (textarea.value.length<lastLength) {
while (textarea.scrollHeight-textarea.offsetHeight<=offset) {
textarea.setAttribute('rows',--rows);
if (rows<=initRows) break;
}
}
while (offset<textarea.scrollHeight-textarea.offsetHeight) {
textarea.setAttribute('rows',++rows);
}
lastLength=textarea.value.length;
};
}
else {
textarea.onkeyup=function(){
var lines=textarea.value.split('\n');
var len=(initRows<lines.length)?lines.length:initRows;
textarea.setAttribute('rows',len);
};
}
} // end of initResizeTextarea()
</script>
<textarea cols="64" rows="4" onfocus="initResizeTextarea(this)">
イチ
に
三
</textarea>
動作確認は、IE7(Sleipnir)、Firefox 2.0.0.14、Safari 3.1.1、Opera 9.27 で行いました。
ただし、Opera はscrollHeightの値が変化してくれないため、手動で入力した改行のみ対応で、オートラップには対応できていません。
ただし、Opera はscrollHeightの値が変化してくれないため、手動で入力した改行のみ対応で、オートラップには対応できていません。
どうも、Operaのtextareaは鬼門らしい(「内容に合わせて伸縮するテキストエリア」を Opera にも - m2より)
« Yin and Yang:動作改善(?)他 | トップページ | 『無断リンクはやめて』という人にはしない方向で »
「パソコン・インターネット」カテゴリの記事
- Twitter 原寸びゅー:PC版ブラウザ用・Twitterの画像閲覧と保存がはかどる拡張機能の紹介(2016.02.12)
- スマートフォンをPC上の音楽を再生するためのリモコンとして使いたい(2016.01.10)
- BIGLOBE光ネクスト(大阪)の通信速度問題 - プロバイダ選びは難しい……(2015.08.13)
- BOOK☆WALKER さんに関して最近経験した不安と不満(2015.08.10)
- 『#鳥獣戯画制作キット』が楽しい(2015.07.01)
「おもいつき」カテゴリの記事
- ココログをTwitterカードに対応させてみる(2016.11.23)
- 神使の兎 ~宇治神社にて~(2016.07.10)
- Twitter 原寸びゅー:PC版ブラウザ用・Twitterの画像閲覧と保存がはかどる拡張機能の紹介(2016.02.12)
- スマートフォンをPC上の音楽を再生するためのリモコンとして使いたい(2016.01.10)
- 【覚書】風柳亭(ココログプロ)をレスポンシブWebデザイン化(Bootstrap3使用)(2015.10.09)
「覚書」カテゴリの記事
- 鍛高譚 ~ カレイにまつわる物語(2018.05.25)
- ココログをTwitterカードに対応させてみる(2016.11.23)
- 神使の兎 ~宇治神社にて~(2016.07.10)
- Twitter 原寸びゅー:PC版ブラウザ用・Twitterの画像閲覧と保存がはかどる拡張機能の紹介(2016.02.12)
- スマートフォンをPC上の音楽を再生するためのリモコンとして使いたい(2016.01.10)
« Yin and Yang:動作改善(?)他 | トップページ | 『無断リンクはやめて』という人にはしない方向で »
コメント