这是此问题的一个分支:Chrome counts characters wrong in textarea with maxlength attribute
在那个问题中发现了Javascript counts carriage returns are one character when in fact it is two (\r\n
),为什么会这样?
答案 0 :(得分:22)
由于未知原因,jQuery始终将<textarea>
值中的所有换行符转换为单个字符。也就是说,如果浏览器为换行符提供\r\n
,则jQuery会确保\n
的返回值仅为.val()
。 (实际上原因可能不是“未知”;它可能会使浏览器的结果标准化,因为IE将换行符报告为2个字符长。)
对于“maxlength”,Chrome和Firefox都会以相同的方式计算<textarea>
个标签的长度。
但是,HTTP规范坚持将换行符表示为\r\n
。因此,jQuery,webkit和Firefox都错了。发布该字段时,webkit和Firefox正确添加换行符!
结果是,如果您的服务器端代码确实具有固定的字段值最大大小,则<textarea>
标签上的“maxlength”几乎没用。
修改这仍是2015年的一个问题 - 至少在Chrome 45.0.2454和IE 11.0.9600上。