制作ブログ Web制作マークアップJavaScriptmaxlengthで指定されたテキストのlength

maxlengthで指定されたテキストのlength

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テストです」で入力。
検索時にinputのテキスト文字数をlengthで取得し、hiddenのパラメータで渡してページ遷移。
サンプルページ

調査結果

ブラウザ utf8 Shift-JIS euc-jp
IE8 5 5 5
IE7 5 5 5
IE6 5 5 5
FF3.6 5 5 5
Chrome 5 5 5
Safari4 5 5 5
Opera10.10 5 5 5
Sleipnir2.9 5 5 5
Safari4(Mac) 5 5 5
FF3.6(Mac) 5 5 5

考察

まず、文書型による結果の違いはなかったため、調査結果は xhtml 1.0 strict、 xhtml 1.0 transitional、 html 4.01 transitional 用にそれぞれ3つ用意せず、一つにしている。

現在主要のブラウザ・文字コードでは、半角1文字でも全角1文字でも同じ「1」としてカウントされ、結果「5」が渡されている。
補足)
Safari4においては入力時は2バイト文字はmaxlength値は関係なく入力されるため、maxlength値が無視されるように感じる。しかしデータとしては最初の5文字しか渡らない。