关♥生活,关注互联网。
Chrome21中textarea的maxLength与value.length值不一致
问题描述:
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了,输入三个换行后再敲两个数字,这俩数字居然能“吃掉”一个换行。怪哉。