Max的最大长度不正确,但在FF中表现良好

时间:2012-07-26 18:45:44

标签: html

我在textarea使用maxlength,并使用JS来检查剩下的字符数。如果我尝试输入一个简单的字符串

即:

  

1234567890

重复maxlength工作完美,但如果我尝试输入这样的字符串:

Welcome!

1. this is a test
2. this is a test
3. this is a test

hahaahahahahahahaahahahahahahahhahaahahahahahahahahahahahaaaaaaaaaaaaaasddddddddddasdaasdasdasd

它会在剩下的6个字符处停止,但在FF上它会完美运行。

我试图对maxlength如何工作进行一些研究但是没有成功,所以我想知道为什么maxlength在chrome上不能完美运行。可能是因为输入了空格和特殊字符?

谢谢

1 个答案:

答案 0 :(得分:5)

可以使用像

这样的简单代码来证明这个问题
<textarea maxlength=5 rows=2 cols=10></textarea>

在Firefox上,您可以键入“12”,按Enter键,然后键入“34”,然后您无法输入更多内容。在Chrome上,如果您尝试执行相同操作,则无法在“3”之后再键入。

Chrome似乎正常运行,而Firefox却没有。 maxlength的{​​{1}}属性是HTML5的新颖性,因此正确性的最佳定义是最新的W3C HTML5草案或最新的WHATWG HTML文档,他们同意这个问题(以及大多数其他问题) )。

通过W3C HTML5 definition for textarea,值中的换行符被浏览器规范化为CR LF(回车符,换行符,即两个控制字符)。因此,如果您键入“12”,请按Enterm,然后键入“3”,您输入了五个字符,因为换行计为两个字符。

空格计为字符,特殊字符也是如此。通过W3C HTML5草案,一些非常特殊的字符,即基本多语言平面(BMP)之外的字符,非常特殊:它们每个都计为两个字符,因为长度以16位代码单位计算。但大多数人从未使用过非BMP角色。