IE textarea 换行错误?

Posted

技术标签:

【中文标题】IE textarea 换行错误?【英文标题】:IE textarea wrap bug? 【发布时间】:2013-03-21 02:31:43 【问题描述】:

似乎从 IE7 到 IE10 的 IE 在使用 \n (或 \r\n - 没关系 - 结果相同)时错误地将 textarea 控件中的文本换行。这是 IE 中的一个错误,还是他们对待 html 标准的方式与其他浏览器不同——谁是对的?我已经定义了:

<textarea id="TextArea1" runat="server" style="width: 190px; height: 390px; white-space: normal; word-wrap: normal; overflow: scroll" ></textarea>

当我尝试使用 javascript 代码 (obj.value += text;) 添加长字符串(如“VeryLongStringEndingWithNewLine\n”)时,文本显示在一行中并带有滚动条(这没关系),但添加了一个额外的空行(\r\n) - 为什么? 当我尝试多次添加像“Short\n”这样的短字符串时,再次通过JavaScript代码,文本位于同一行(应该在单独的行上,因为应该应用正常换行)。 此外,当我进行回发时,所有 \r\n 都被替换为空格(为什么?),然后正确解析文本(假设我使用空格而不是 crlf 正常换行,只有在不适合该区域时才换行)。

当使用 FF 或 Chrome 时,相同的控件行为正确 - 显示长行而没有额外的空下一行,短行在不同的行上,回发时不会用空格替换。

我知道我可能可以使用其他选项或空白字符,但我觉得上面关于 IE 的说法不正确。有cmets吗?

【问题讨论】:

【参考方案1】:

在正常情况下,textareas 按字面意思处理空格并根据需要换行。

但是因为你用 CSS 覆盖它,结果可能不稳定。

在这种情况下,空格 (\n) 将折叠为一个空格,因为 white-space:normal 就是这样做的。

我不完全确定您要在这里实现什么,因为我相当确定 textareas 的默认行为非常好。如果您不想要这种行为,则不应使用 textarea。

【讨论】:

感谢您的回答。只是我试图将记录作为行添加到文本区域,如果它不适合一行,我想出现水平滚动条。我不希望一张唱片占用超过一行,无论它有多长。我认为如果控件支持记录的属性,我为什么要使用其他任何东西? 对每条记录使用&lt;div&gt; 可能会更好。 我稍后会将 textarea 值传递给其他处理,因此使用 div 不是那么方便 好的,默认行为(我已删除“空白:正常;”)在 IE 和 FF 上正常工作,但 Chrome 现在的行为与之前的 IE 类似。因为这不会发布到互联网上,所以它对我有用,谢谢 Kolink。

以上是关于IE textarea 换行错误?的主要内容,如果未能解决你的问题,请参考以下文章

IE 问题 - Textarea 始终在一个字符串中显示文本,没有换行符

IE中的换行问题

Google Chrome textareas 换行和添加换行符

Internet Explorer 11 自动换行不起作用

IE 不允许我使用 javascript 设置 textarea 值

textArea换行符转<br/> <br/> 转 textArea换行符