jigen, Hirotomo Kunimatsu
Tokyo, Japan
mailto: microformat hcard
top

prototype.jsでリサイズ出来るtextareaを作る

リサイズ出来るtextareaを作るjavascriptのフレームワークであるprototype.jsでhtml入力欄であるtextareaをリサイズ(サイズ変更できる)ようにするための方法だそうです。普段使いませんが文章のような入力が多いものに関しては使えそうなので、( ..)φメモメモメモ。

以下のコードを使うそうです。内容を見るとhtmlのrowsとcolsを計算して入力があった場合はサイズを自動的に調整するものっぽい。

var ResizingTextArea = Class.create();

ResizingTextArea.prototype = {
defaultRows: 1,

initialize: function(field)
{
this.defaultRows = Math.max(field.rows, 1);
this.resizeNeeded = this.resizeNeeded.bindAsEventListener(this);
Event.observe(field, "click", this.resizeNeeded);
Event.observe(field, "keyup", this.resizeNeeded);
},

resizeNeeded: function(event)
{
var t = Event.element(event);
var lines = t.value.split('\n');
var newRows = lines.length + 1;
var oldRows = t.rows;
for (var i = 0; i <lines.length; i++)
{
var line = lines[i];
if (line.length>= t.cols) newRows += Math.floor(line.length / t.cols);
}
if (newRows> t.rows) t.rows = newRows;
if (newRows
}
}

んで、実際使う時はこんな感じ(↓)?

<textarea name="textarea" onload="new ResizingTextArea(this);"></textarea>
スポンサードリンク

さて、関係ないですが先日エントリーしたjQueryがやっぱり面白そう。mootoolsと併せてこっちも追っていきたいなぁ。と思った次第(本当に関係ないな。スンマヘン)。


スポンサードリンク

関連エントリー

よろしければ、以下リンクよりコメントをどうぞ。
2007/01/17 16:41:49200716:41
アリ「ここからメニューだすよ」
アリ「ごちそういっぱーい」
アリ「腹へったー」
アリ「働けー働けー♪」