33

ここには、br />の変換や、異なる言語間での改行の保持に関するスレッドがたくさんありますが、textareaに関するスレッドは多くありません。

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

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では、改行は保持されません。新しい行だけをに変換したいの
ですが、現在、すべてのスペースが変換されています。それをtextareaに変換する2番目のスクリプトがあるため、文字列を格納するための変数があります。
'を新しい行に再変換する必要もあります。

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

4

2 に答える 2

90

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

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

これにより、新しい行に戻ります。さまざまなブラウザがinnerHTMLをどのように解釈するかもカバーしています。

boxText.replace(/ <br \ s?\ /?> / g、 "\ n");
于 2011-05-14T04:29:04.777 に答える
1

これがうまくいくかどうかはわかりませんが、試してみることができます

<br/>これはtextareaの新しい行に変換されます

$(this).val().split("<br/>").join("\n");

そしてこれはそれを元に戻します

boxText.split("\n").join("<br/>");

これは私のために働く

于 2020-04-15T10:09:06.243 に答える