Mixtype

Javascriptでtextarea内に入力した文章をリアルタイムでプレビュー

Mixtype No.63 Last Update On 2010-01-12 2009 column

Javascriptでtextarea内に入力した文章をリアルタイムでプレビュー

Mixtype No.63 Last Update On 2010-01-12 2009 column
テキストエリア内に入力した文章をリアルタイムでプレビューするためにはどうしたら良いのかと言うことで「textarea プレビュー」で検索。すると、どうやらJavascriptを使えばできるようなので「Javascript textarea プレビュー」で再検索。Javascriptの知識があまり無いので、いかに短くそしてわかりやすいものをと言うことで探すこと2時間。見つけた例文がこれです。

参照:テキストエリア内の文字をタグで囲むと.. - 人力検索はてな
<script type="text/javascript">
function showPreview() {
var html = document.getElementById('text').value ;
/*
必要なら html に変換処理を入れる
*/
document.getElementById('preview').innerHTML = html ;
}
</script>

# 以下body以降に

<form>
<textarea id="text" onkeyup="showPreview()"></textarea>
</form>
<div id="preview"></div>

既存のperlに、このコードを組み込む場合、「text」をプレビューさせたいtextareaのnameに変更。プレビュー成功。しかしながら、textarea内の改行がプレビューに反映されないので原因を探ったところ、「replace」を使って改行を「<br>」に置き換えれば良いらしい。

参照:テキストエリアをリアルタイムに表示したい - BIGLOBEなんでも相談室
<script type="text/javascript">
function showPreview() {
var html = document.getElementById('comment').value ;
var html = html.replace(/\r\n|\r|\n/g, '<br>');

document.getElementById('preview').innerHTML = html ;
}
</script>

改行されない・・・。
出て来たソースを見て原因究明していると、どうやら改行の処理に使う「\r」が既存のperlに引っかかっていたので、Javascript部分のコードをpreview.jsとして1ファイルにまとめ、外部ファイルとして読み込んでみたら、改行に成功しました。これは便利です。ただ、「ctrl+z」の「元に戻す」ショートカットキーがtextarea内で使えなくなりました。