textarea の最初の改行が無視される件

2008年 7月 29日 12:00

恥ずかしながら知らなかったのですが、textarea の最初の改行って無視されるんですね。

例えば、次のような感じで HTML を書くと

<?php
	$text = "\r\n\r\n改行が2つ入ってます。";
?>
<textarea rows="4" cols="30"><?php print($text); ?></textarea>

こんな感じで textarea 中の最初の改行は無視されてしまいます。

——————
\r\n
改行が2つ入ってます。
——————

ブラウザ依存かとも思いましたが、IE7 でも Firefox でも iモードブラウザでも同じでした。

最初の改行を有効にするには HTML 中のソースで textarea タグを同一行に書かずに、改行して書く必要があるみたいです。

<?php
	$text = "\r\n\r\n改行が2つ入ってます。";
?>
<textarea rows="4" cols="30">
<?php print($text); ?>
</textarea>

すると、こんな感じで改行が反映されます。

——————
\r\n
\r\n
改行が2つ入ってます。
——————

普通に素で HTML を書ける場合はいくらでも対応できるんですけど、フレームワークなんかで textarea タグが直接いじれない場合は面倒そうです。

例えば Struts の html:textarea タグは展開されると1行で記述されてしまうため、最初の改行が必ず消えてしまいます。 html:textarea タグを使う場合は、フォームの getter メソッドあたりを工夫して、先頭に改行を追加してあげたりする必要がありそうですね。


トラックバック URL


※言及リンクのないトラックバックは削除されます。
※書き込まれてから公開されるまで時間がかかる場合があります。

コメントをどうぞ

Spam protection by WP Captcha-Free

※書き込まれてから公開されるまで時間がかかる場合があります。