5

我想将文本保存在正在pre格式化的 contenteditable div 中。我将如何获得文本的pre形式而不是文本的位置\n\r被省略?

$('#save').click(function(e) {
    var id = "board_code";
    var ce = $("<pre />").html($("#" + id).html());
        if ($.browser.webkit)
          ce.find("div").replaceWith(function() { return "\n" + this.innerHTML; });
        if ($.browser.msie)
          ce.find("p").replaceWith(function() { return this.innerHTML + "<br>"; });
        if ($.browser.mozilla || $.browser.opera || $.browser.msie)
          ce.find("br").replaceWith("\n");

        alert( ce.text() );
});

http://jsfiddle.net/AD5q7/10/这不起作用

尝试 contenteditable div 的字符串

更新:通过键入字符串来尝试。粘贴字符串时可能没有问题。

1

abc def

    gh  i

jkl

2

#include<iostream.h>
#include<conio.h>

int main(){
    int grade, passingMark=75;

    cout<<"Hi there, please enter your mark: ";
    cin>>grade;

    if( ((grade >= passingMark)||(grade==35)) && (grade<101)){
        cout<<"\nPass!";
    }

    return 0;//15lines
}    

保存文件也必须像这样格式化,并且必须删除\n\r。我希望警报应该包括 \n

4

2 回答 2

1

当 contenteaditable div 失去焦点时,整个文本将转换为 html,例如

<div contenteditable="true">Your text is here
and has new line </div>

失去焦点后,它将虚拟文本区域转换为 html 即

<div>Your text is here</div><br><div>and has new line </div>

并且当您尝试 .text() 时,您将失去所需的对齐方式,因为实际上该 div 中不再存在。

解决方案 1. 您可以使用 textarea,将边框属性设置为 0,这将使其看起来像 contenteditable div 或 2. 您可以获取 contenteditable div 的整个 html 并使用 javascript 将 html 替换为相应的文本表示形式(为此参考javascript 正则表达式替换 html 字符

于 2015-11-23T14:52:45.150 回答
0

尝试这个

alert( ce.text().replace(/\n/g, "\\n" ).replace(/\r/g, "\\r"));
于 2013-10-09T17:22:17.053 回答