问题:
在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);
});
});
答案 0 :(得分:2)
使用x.val()
获取textarea x
和x.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);
});
});