这是那个问题的一个分支:Chrome 在带有maxlength属性的textarea中计算字符数时出现错误
在那个问题中,发现Javascript 在计算回车符时将其视为一个字符,实际上它是两个字符(\r\n
),为什么会这样呢?
这是那个问题的一个分支:Chrome 在带有maxlength属性的textarea中计算字符数时出现错误
在那个问题中,发现Javascript 在计算回车符时将其视为一个字符,实际上它是两个字符(\r\n
),为什么会这样呢?
<textarea>
的值中的所有换行符转换为一个字符。也就是说,如果浏览器给出\r\n
作为换行符,jQuery会确保在.val()
的返回值中只有\n
。(实际上,这个原因可能并不是“未知”的;它很可能是为了规范化跨浏览器的结果,因为IE将换行符报告为长度为2的字符。)<textarea>
标签的长度。\r\n
。因此,jQuery、Webkit和Firefox都做错了。当提交表单时,WebKit和Firefox会正确地添加换行符!<textarea>
标签上的"maxlength"属性几乎是无用的。
编辑:在2015年仍然存在这个问题-至少在Chrome 45.0.2454和IE 11.0.9600上。maxlength
属性实际上会正确工作,并将换行符计为两个字符,这是数据将保存在后端的方式。 - wired_inmaxlength
的整个含义(我的个人看法)。我已经在Firefox和WebKit上记录了错误,并且我收到了大量奇怪的不明智的回应。 maxlength
实现检查由.value
返回的长度,也就是说 没有 提交表单时引入的CR字符长度。我已经开始使用我的JavaScript解决方案了。 - Pointymaxlength
实现检查 .value
返回的长度,也就是没有 CR 字符的长度。” - 实际上正好相反,maxlength
计算 CR+LF 的字符数(JavaScript 不计入),如上面的 jsfiddle 示例和链接问题所示。因此,就服务器端代码而言,maxlength
是正确的,只有当你还想用客户端 JavaScript 处理它时,才会出现“问题”。 - MrWhite\r
是必须的,所以去掉它也没关系。这只是一个奇怪的情况。 - Pointy