【问题标题】:Line breaks won't display in textarea in IE换行符不会显示在 IE 的 textarea 中
【发布时间】:2011-05-05 14:17:36
【问题描述】:

使用 jQuery 的 .load() 方法,我将文本加载到文本区域。在 Chrome 和 FF 中运行良好。与往常一样,IE 必须有所不同,并且不会显示换行符。

我试过white-space:pre-wrap,但没有成功。

有什么想法吗?

我的代码:

$('#textarea').load('data.php');

data.php 只是查询 MySql 数据库并打印结果。

【问题讨论】:

  • 什么是换行符?他们是\r\n吗?

标签: javascript jquery html ajax internet-explorer


【解决方案1】:

这可能是line-ending issue。文本中的换行符是\ns 还是\r\ns?如果他们只是\ns,请尝试规范化文本。你可以用一点 JavaScript 来做到这一点:

function normalizeNewlines(text)
{
    return text.replace(/(\r\n|\r|\n)/g, '\r\n');
}

这是一个过去对我有用的解决方案,基本上相反:我需要从 <pre> 中取出可以粘贴到 !@#$ing 记事本并显示完整的换行符。

【讨论】:

  • 很高兴看到一个马特提出了一个原因,而另一个马特同时写了一个解决方案。 ;)
  • 我们马特有一种特殊的联系:)
  • @Matt 感谢您的回复。我试过这个没有运气。我尝试使用 data.indexOf('\\') 检查字符串中的特殊字符,对吗?
  • @Gary,试试data.indexOf('\n'),这个字符不是字面上的斜线而是一个字母,它是一个字符,它只是以这种方式在代码中直观地显示。
  • @Matt Greer 谢谢,我以为我试过了,但显然我打错了,因为那行得通。呸。
【解决方案2】:

当使用innerHTML() 时,它们是与 IE 的兼容性问题。由于 Jquery 的 .html().load() 方法都使用 innerHTML(),它们通过扩展可能会导致一些问题。 一种解决方案是改用.text()。如果您想使用 AJAX 和 Jquery 将文本加载到 <textarea> 中,您需要执行以下操作:

$('#textarea').post('data.php',function(data){
        $(this).text(data);
    })
);

【讨论】:

【解决方案3】:

我在内联编辑模式下使用了kendoui网格,对于描述字段文本被应用,解决方案是即内联样式:

<textarea style="white-space:pre-wrap;" name="' + options.field + '" ...

keydown 事件中的代码如下:

if (event.keyCode == 13) {
        event.stopPropagation();
    }

【讨论】:

    猜你喜欢
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-03
    相关资源
    最近更新 更多