问题描述:

Chrome21及以后版本中,在<textarea>中敲入回车换行,value.length值加一,而用于maxLength检测的长度值加二,导致value.length < maxLength时,就不能再敲入内容。最极端的情况,当全部内容为换行时,value.length = maxLength/2, 演示如下


原因分析:

目前只知道可能和转义字符有关

转义字符 意义 ASCII码值(十进制)
\n 换行(LF) ,将当前位置移到下一行开头 010
\r 回车(CR) ,将当前位置移到本行开头 013

Windows中回车返回\r\n , 而Linux中返回\n , 刚好长度有两倍关系。至于真正原因还得等知情者来解答了。

以上演示在Chrome、IE和Firefox下测试,最正常的是Firefox完全符合预想,其次是IE,最怪异的就是Chrome了,输入三个换行后再敲两个数字,这俩数字居然能“吃掉”一个换行。怪哉。