5

質問の言い回しが間違っているかもしれませんが、jQuery でやろうとしていることは次のとおりです。

出発点:

This is<br><br> some<br> <br> <br> <br> content

最終目標:

This is

some



content

説明:

より具体的には、div 内のコンテンツの操作に問題があり、編集時にテキストエリアに変わり、編集が完了すると div に戻ります。データベースは保存時に < br > タグを保存する必要があります...テキストエリアは代わりに改行 (\n) を使用し、(\r) を返すように見えるため、これら (< br >、\n、および \r) 間の変換は私にとってはちょっとした問題。

複数のブラウザ間でこれを処理する適切な方法はありますか? おそらく、ずっとテキストエリアを使用する方が簡単かもしれません(そしてdivを忘れてください)?コンテンツを div と textarea の間で移動してから div に戻そうとすると、スペーシングでファンキーなことが起こり始めます。

詳細編集:

ユーザーが編集をクリックして元の div をテキストエリアに変更すると、変更を開始して [完了] をクリックしますが、編集をキャンセルして古いコンテンツに戻すことにします。textarea は div に戻り、古いコンテンツ (非表示の div に格納されている) がユーザーが書いたものを置き換えます。したがって、コンテンツの前後。

編集:

素晴らしいフィードバック、ありがとうございました! これは、すでに開発されている Web サイトで動作する必要があり、すべてのページのコンテンツを保持するすべての div を編集する必要があるためです。< br > はデータベースに保存する必要があります。

4

4 に答える 4

6

これは役に立ちますか?

function replaceLineBreaksWithHTML(string) {
 return string !== undefined ? string.replace(/\n/g, '<br/>') : "";
}

function replaceHTMLWithLineBreaks(string) {
 return string !== undefined ? string.replace(/<br\/>/gi, '\n') : "";
}
于 2013-08-09T14:28:35.733 に答える
1

textareaこの方法でとdiv要素の間でテキストを渡すことができます。

(私はjQueryを使用していますが、必要ではありません。これは単なるデモです)

$("#b1").click(function(){
    var text = $("textarea").val().replace(/\n/g, "<br>");
    $("div").html(text);
});

$("#b2").click(function(){
    var text = $("div").html().replace(/<br>/gi, "\n");
    $("textarea").val(text);
});

デモ

于 2013-08-09T14:34:04.980 に答える
0

replace regex を使用して br を \n に変換できます:)

$('#mytextarea').val($.trim($('#mydiv').html().replace(/<br>/g, '\n')));

このフィドルを見てください:http://jsfiddle.net/N7GkH/

于 2013-08-09T14:35:15.077 に答える
0

jQueryparseHTMLを使用していることを考えると、このジョブに使用します。

var html = $.parseHTML('This is<br><br> some<br> <br> <br> <br> content');
html.appendTo(body);
于 2013-08-09T14:36:58.227 に答える