如何防止IE将textarea换行符转换为单个空格

时间:2011-12-16 17:02:46

标签: javascript html internet-explorer newline

我有以下HTML代码,它基本上复制了一个textarea框,包括其文本。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>Test Page</title>
        <script type="text/javascript">
            function copyTextarea() {
                var originalTextbox = document.getElementById('originalTextarea');
                var copiedTextboxSpan = document.getElementById('copiedTextareaSpan');

                var text = originalTextbox.value;

                copiedTextboxSpan.innerHTML = '<textarea name="myNewTextarea" rows="5" cols="50"></textarea>';

                var newTextbox = document.getElementsByName('myNewTextarea')[0];
                newTextbox.innerHTML = text;
            }
        </script>
    </head>
    <body>
        Enter your text:
        <br />
        <textarea id="originalTextarea" rows="5" cols="50"></textarea>
        <br />
        <input type="button" value="Copy Textarea" onclick="copyTextarea()" />
        <br />
        Copied text:
        <br />
        <span id="copiedTextareaSpan"></span>
    </body>
</html>

这是我所拥有的非常简化的HTML版本,所以请不要提出大的修改。我需要创建textarea框并单独设置其文本等。

此代码看似简单,工作正常,除了换行符。出于某种原因,Internet Explorer(IE)始终将换行符转换为单个空格。更奇怪的是,这在我的Tomcat服务器本地没有发生,但是在我部署到测试服务器时悄然兴起。但是在测试服务器上,它在Chrome,Firefox等中运行良好。

有谁知道可能会发生什么?我不太了解JavaScript,但我认为这是执行代码的浏览器。但如果这是真的,为什么IE在本地没有问题,但在测试服务器上有问题?

2 个答案:

答案 0 :(得分:3)

尝试创建实际的DOM对象:

newTextarea = document.createElement('textarea');
newTextarea.setAttribute('name', 'myNewTextarea');
newTextarea.setAttribute('rows', '5');
newTextarea.setAttribute('cols', '50');

copiedTextboxSpan.appendChild(newTextarea);

var newTextbox = document.getElementsByName('myNewTextarea')[0];
newTextbox.value = text;

此外,在处理textarea时,请使用value代替innerHTML

答案 1 :(得分:0)

如果你能使用jQuery:

$('#copiedTextareaSpan').replaceWith(function () {
    var text = $('#originalTextarea').val();
    return '<textarea name="myNewTextarea" rows="5" cols="50">' + text + '</textarea>';
});

将文本从originalTextarea复制到copiedTextArea(创建后)。