【问题标题】:Internet Explorer: how to escape extra carriage return after editing Textarea?Internet Explorer:如何在编辑 Textarea 后转义多余的回车?
【发布时间】:2011-06-20 14:44:19
【问题描述】:

我们在 Internet Explorer 中有一个多行文本区域

如果我们在下一个之后检查它的内容,那么一切都是正确的(textarea 中没有额外的回车):

document.getElementById( 'text-area' ).value = "Hello,\nWorld!";

但是,如果我们将插入符号设置为第二行的开始位置(在 Internet Explorer 中,而不是在代码中)并按 tab 键会有一个 额外的回车符(在下面的keydown上有一个字符串转储):

value[0]='H'
value[1]='e'
value[2]='l'
value[3]='l'
value[4]='o'
value[5]=','
value[6]='\r'
value[7]='\n'
value[8]='W'
value[9]='o'
value[10]='r'
value[11]='l'
value[12]='d'
value[13]='!'

这是一个问题,因为其他浏览器不插入额外的回车

您知道如何在 Internet Explorer 中防止这种情况发生吗?在 CSSJavascript 的帮助下。

【问题讨论】:

  • 回车的具体问题是什么?
  • 我想处理用户在 textarea 中按下 tab 字符的情况。如果 Internet Explorer 出现问题(下一个答案不能正常工作):stackoverflow.com/questions/6140632/…
  • 我真的不明白 Tab\r 有什么关系。
  • 您可以在 IE 中进行测试:将 caret 设置为新行的零索引并键入 Tab

标签: javascript jquery css internet-explorer


【解决方案1】:

您无法阻止它,而且您可能无论如何也不应该阻止它。尽管 IE 和其他浏览器在报告 <textarea> 元素的值的方式上有所不同,但 所有 浏览器实际上确实在值中包含“\r\n”来表示所有硬换行符围绕元素的表单被提交。换句话说,即使 Firefox 报告换行符只包含“\n”,它实际上是在骗你——当表单被发布时,值 也有“\r”。

出于某种原因,jQuery 通过去除“\r”字符来规范跨浏览器的行为,这当然是错误的做法。这意味着当您尝试计算字符时(如 Stackoverflow 注释框),您必须考虑到每个单个“\n”字符实际上代表服务器上的两个字符这一事实。因此,您必须要么去掉服务器上的“\r”,要么最好在客户端验证代码中考虑它。

【讨论】:

  • 好的,非常感谢您提供的信息。我对你的答案投了赞成票。
【解决方案2】:

我最好的建议是调整你对问题的思考方式。

正如here 提到的,没有通用的换行符。有些操作系统使用\n,有些使用\r\n,还有一些使用\r

HTTP 协议将\r\n 指定为应该在标头之间使用的换行符,因此每个浏览器都必须(以某种方式)将换行符视为\r\n。如果您想使用换行符,只需使用\r\n。这样你就不会那么头疼了。

【讨论】:

    【解决方案3】:

    您可以做的是接管 tab 按键并将其替换为您自己的选择:

    请参阅此处以获取解决方案:

    jQuery: How to capture the TAB keypress within a Textbox

    【讨论】:

    • 谢谢你痴呆症。对不起,问题不是关于如何处理制表键
    • @Buh Buh - 是的......我试着不要再想太多...... ;) @segzach - 你是对的,这不是问题。但是,它确实为您的问题提供了解决方案。
    • @Dementic 好的,如果你这么认为的话。我对你的答案投了赞成票。乍一看,您似乎错过了提问的感觉。我稍后会查看您的决定。谢谢。
    • 好吧,如果问题是制表符插入了一个换行符,那么接管制表符行为并删除该换行符是合乎逻辑的。
    • 好的,问题出在你刚才所说的。
    猜你喜欢
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    • 1970-01-01
    • 1970-01-01
    • 2015-01-10
    • 2010-11-13
    相关资源
    最近更新 更多