这是这个问题的一个分支:Chrome counts characters wrong in textarea with maxlength attribute
在那个问题中,发现Javascript 将回车计数为一个字符,而实际上它是两个 ( \r\n
),这是为什么呢?
测试小提琴:http: //jsfiddle.net/maniator/E527z/
这是这个问题的一个分支:Chrome counts characters wrong in textarea with maxlength attribute
在那个问题中,发现Javascript 将回车计数为一个字符,而实际上它是两个 ( \r\n
),这是为什么呢?
测试小提琴:http: //jsfiddle.net/maniator/E527z/
由于未知的原因,jQuery 总是将 a 值中的所有换行符转换<textarea>
为单个字符。也就是说,如果浏览器给它\r\n
一个换行符,jQuery 会确保它只是\n
在.val()
. (实际上原因可能不是“未知”;可能是跨浏览器标准化结果,因为 IE 报告换行符为 2 个字符长。)
<textarea>
出于“maxlength”的目的,Chrome 和 Firefox 都以相同的方式计算标签的长度。
但是,HTTP 规范坚持将换行符表示为\r\n
. 因此,jQuery、webkit 和 Firefox 都犯了这个错误。发布该字段时,webkit 和 Firefox 正确添加了换行符!
结果是,<textarea>
如果您的服务器端代码确实具有固定的字段值最大大小,那么标签上的“maxlength”几乎没有用。
编辑这在 2015 年仍然是一个问题 - 至少在 Chrome 45.0.2454 和 IE 11.0.9600 上。