为什么Javascript只在两个时将回车计算为一个字符?

时间:2012-04-05 15:03:10

标签: javascript dom carriage-return

1 个答案:

答案 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上。