jjzjj

javascript - 互联网浏览器 : how to escape extra carriage return after editing Textarea?

coder 2025-02-04 原文

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

如果我们在 next 之后检查它的内容,那么一切都是正确的(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 的帮助下。

最佳答案

您无法阻止它,而且您可能也不应该这样做。尽管 IE 和其他浏览器报告 <textarea> 值的方式不同。元素,所有 浏览器实际上在提交围绕该元素的表单时在值中包含所有硬换行符的“\r\n”。换句话说,尽管 Firefox 报告换行符仅由“\n”组成,但它实际上是在骗你——当提交表单时,值也包含“\r”。

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

关于javascript - 互联网浏览器 : how to escape extra carriage return after editing Textarea?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6413018/

有关javascript - 互联网浏览器 : how to escape extra carriage return after editing Textarea?的更多相关文章

随机推荐