Poi*_*nty 22

由于未知原因,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上.

  • "结果是,如果您的服务器端代码确实具有固定的字段值最大大小,那么<textarea>标签上的"maxlength"几乎没用." 我糊涂了.在我看来,你说jQuery将换行符报告为单个字符,但浏览器正确使用了两个字符.如果是这种情况,`maxlength`属性是否实际上无法正常工作并将换行计为两个字符,这是数据在后端保存的方式? (3认同)