1

我在文本区域使用 maxlength,并使用 JS 检查剩余的字符数。如果我尝试输入一个简单的字符串

IE:

1234567890

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

Welcome!

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

hahaahahahahahahaahahahahahahahhahaahahahahahahahahahahahaaaaaaaaaaaaaasddddddddddasdaasdasdasd

它在剩下的 6 个字符处停止,但在 FF 上它工作得很好。

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

谢谢你

4

1 回答 1

5

可以使用简单的代码来演示该问题,例如

<textarea maxlength=5 rows=2 cols=10></textarea>

在 Firefox 上,你可以输入“12”,按回车,然后输入“34”,然后就不能再输入了。在 Chrome 上,如果您尝试这样做,您将无法在“3”之后再键入任何内容。

似乎 Chrome 可以正常工作,而 Firefox 不能。的maxlength属性textarea是 HTML5 的新奇事物,因此正确性的最佳定义是最新的 W3C HTML5 草案或最新的 WHATWG HTML 文档,并且他们同意这个问题(以及大多数其他问题)。

根据W3C HTML5 对 的定义textarea,值中的换行符被浏览器规范化为 CR LF(回车,换行,即两个控制字符)。因此,如果您输入“12”,按 enterm,然后输入“3”,则您输入了五个字符,因为换行符算作两个字符。

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

于 2012-07-26T20:24:08.320 回答