复制过程中丢失的Textarea格式

时间:2014-06-25 13:15:30

标签: javascript jquery html

问题:
在textarea中格式化文本后,复制到另一个textarea时格式化将丢失,无论是通过代码还是通过ctrl-drag鼠标复制。

详细信息:
为了证明这个问题,我有一个没有CSS的简单html页面,以及一个javascript函数,它通过删除换行符来格式化文本。我将文本从记事本复制到我的网页textarea1。我运行javascript函数。此函数用“”替换所有回车符。该函数运行正常,没有错误。运行后,所有回车都已从textarea1中的文本中删除。我可以通过运行将文本从textarea1复制到textarea2的功能来确认它们已被删除。

但是,接下来是奇怪的。格式化textarea1后,当我选择所有文本并按住Ctrl键(将文本复制)到textarea2时,将复制原始文本,并将回车准确地返回原位。如果我复制粘贴也会发生同样的情况。发生了什么事?

设定:
赢得7台机器,运行IE9。

代码:
HTML ...

<!DOCTYPE html>
<html>
<head>
    <title>Text Editor</title>
    <!--scripts-->
    <script src="jquery-2.1.1.min.js"></script>
    <script src="text_edit_test.js"></script>
</head>
<body>
    <h1>Service Notes Text Editor</h1>
    <textarea id="textarea1" cols="60" rows="11"></textarea>
    <br>
    <button type="button" id="buttonRemoveCR">Format Text</button>
    <button type="button" id="buttonCopyText">Copy Text</button>
    <br>
    <textarea id="textarea2" cols="60" rows="30"></textarea>
</body>
</html>

...和javascript ...

// make sure doc ready first
$(document).ready(function(){
//format Text
$("#buttonRemoveCR").click(function(){
    var myText = "";
    var myTextRes = "";
    myText = $("#textarea1").html();
    //remove all char returns
    myTextRes = myText.replace(/\r/, "");
    //change text in textarea1 so no carriage returns
    $("#textarea1").html(myTextRes);
});

//copy Text
$("#buttonCopyText").click(function(){
    var myText = "";
    myText = $("#textarea1").html();
    $("#textarea2").html(myText);
});
});

2 个答案:

答案 0 :(得分:2)

使用x.val()获取textarea xx.val(text)的内容以设置textarea x的内容 - textareas忽略其内部HTML。

答案 1 :(得分:2)

// make sure doc ready first
$(document).ready(function(){
//format Text
$("#buttonRemoveCR").click(function(){
    var myText = "";
    var myTextRes = "";
    myText = $("#textarea1").val();
    //remove all char returns
    myTextRes = myText.replace(/(?:\r\n|\r|\n)/g, '')
    //change text in textarea1 so no carriage returns
    $("#textarea1").val(myTextRes);
});

//copy Text
$("#buttonCopyText").click(function(){
    var myText = "";
    myText = $("#textarea1").val();
    console.log(myText);
    $("#textarea2").val(myText);
});
});