inputタグ要素の属性、maxlengthについて、ちょっと調べてみた。
調査ポイントは2つ。
半角英数と全角でmaxlength値のカウント方法が異なるか?
文字コードによってカウント方法は異なるか?
調査方法
xhtml 1.0 strict、 xhtml 1.0 transitional、 html 4.01 transitional において、それぞれutf-8、Shift-JIS、euc-jpのサンプルページを用意。
inputタグ要素の属性にmaxlength="5"を追加し、半角と全角を組み合わせた文字「abcテストです」で入力。
検索前後のパラメータ値を各ブラウザで調査。
サンプルページ
調査結果
ブラウザ | utf8 | Shift-JIS | euc-jp |
---|---|---|---|
IE8 | 入力前 : abcテス 入力後 : abcテス |
入力前 : abcテス 入力後 : abcテス |
入力前 : abcテス 入力後 : abcテス |
IE7 | 入力前 : abcテス 入力後 : abcテス |
入力前 : abcテス 入力後 : abcテス |
入力前 : abcテス 入力後 : abcテス |
IE6 | 入力前 : abcテス 入力後 : abcテス |
入力前 : abcテス 入力後 : abcテス |
入力前 : abcテス 入力後 : abcテス |
FF3.6 | 入力前 : abcテス 入力後 : abcテス |
入力前 : abcテス 入力後 : abcテス |
入力前 : abcテス 入力後 : abcテス |
Chrome | 入力前 : abcテス 入力後 : abcテス |
入力前 : abcテス 入力後 : abcテス |
入力前 : abcテス 入力後 : abcテス |
Safari4 | 入力前 : abcテス 入力後 : abcテス |
入力前 : abcテス 入力後 : abcテス |
入力前 : abcテス 入力後 : abcテス |
Opera10.10 | 入力前 : abcテス 入力後 : abcテス |
入力前 : abcテス 入力後 : abcテス |
入力前 : abcテス 入力後 : abcテス |
Sleipnir2.9 | 入力前 : abcテス 入力後 : abcテス |
入力前 : abcテス 入力後 : abcテス |
入力前 : abcテス 入力後 : abcテス |
Safari4(Mac) | 入力前 : abcテストです 入力後 : abcテス |
入力前 : abcテストです 入力後 : abcテス |
入力前 : abcテストです 入力後 : abcテス |
FF3.6(Mac) | 入力前 : abcテス 入力後 : abcテス |
入力前 : abcテス 入力後 : abcテス |
入力前 : abcテス 入力後 : abcテス |
考察
まず、文書型による結果の違いはなかったため、調査結果は xhtml 1.0 strict、 xhtml 1.0 transitional、 html 4.01 transitional 用にそれぞれ3つ用意せず、一つにしている。
現在主要のブラウザ・文字コードでもmaxlength値は、半角1文字でも全角1文字でも同じ「1」としてカウントされる。
ただし、Safari4においては入力時は2バイト文字はmaxlength値は無視される。しかしデータとしては最初の5文字しか渡らない。