textarea要素に入力されたテキストに含まれる改行をbr要素に置き換える処理を、jQueryを使ってJavaScriptで書いてみました。
要件は:
- 改行('\n'、'\r'、'\r\n')をbr要素(<br/>)に置き換える。
- '<'や'&'などの特殊な文字は実体参照('<'や'&')に置き換える。
1番目の要件は、入力されたテキストをHTMLとして解釈するのが前提でしょう。すると、そこには2番目の要件も、暗に含まれているはず。
この2つの要件を両立させるポイントは:
- 改行を含むテキストを、改行を区切りにして分割して、テキストの配列を生成する。
- document.createTextNode()メソッドは、指定したテキストからテキストノードを生成する。このとき、テキスト中の特殊な文字を実体参照に置き換える。
- jQueryの.append()メソッドは、テキストノードでも追加してくれる。
といったところかと。