web-dev-qa-db-ja.com

<br/>に変換されるTextareaの新しい行

Br />を変換したり、異なる言語間で改行を保存したりすることについて多くのスレッドがありますが、テキストエリアに関しては多くありません。

私はこのスクリプトを持っています:

var boxText = "";
$("textarea.BoxText").live('dblclick', function () {
    boxText = $(this).val().replace(/ /g, "<br/>");
  $(this).replaceWith( '<div class="BoxText">' + $(this).val() + '</div>' );

});
$("div.BoxText").live('dblclick', function () {
  $(this).replaceWith( '<textarea form="HTML" class="BoxText">' + boxText + '</textarea>' );
});

編集可能なtextarea要素があります。ユーザーがダブルクリックすると、divに変換されます。ただし、divでは、改行は保持されません。新しい行だけを変換したい
、現在、すべてのスペースが変換されています。テキストエリアに変換する2番目のスクリプトがあるため、文字列を格納するための変数です。私が必要だろう
も同様に新しい行に再変換されます。

これは冗長に見えるかもしれませんが、これには正当な理由があります。

28
C_K

これにより、改行がHTMLブレークタグに置き換えられます。さまざまな組み合わせは、さまざまなブラウザ/システムと改行の解釈方法をカバーすることです。

 $(this).val()。replace(/\r\n |\r |\n/g、 "<br />")

これにより、新しい行に戻されます-また、さまざまなブラウザーがinnerHTMLを解釈する方法もカバーされます。

 boxText.replace(/ <br\s?\ /?>/g、 "\ n"); 
81
Neil