あっきぃ日誌

鉄道ブログのような技術系ブログのようななにか

iOSのMobile Safariではinputタグのmaxlengthの文字制限を越えられるらしい

仕事でいろいろやってたら、なんかみつけました。環境はiPod touch(4th), iOS 4.2.1です。

検証する

テストページを用意。文字を入力したあとボタンを押すと、入力した文字列と文字数をアラートで表示するだけのページです。
http://shrimp.marokun.net/files/ios-input-maxlength-test.html

<input type='text' id="num" name='num' class="port" maxlength="5">
<input type="button" name='button' value="押す" onclick="alert('入力された文字: '+document.getElementById('num').value+'\n文字数: '+document.getElementById('num').value.length+'文字 / 5文字')">

Mobile Safariで開いて、「1234567890」と入力、確定します。

当然ながらmaxlengthの制限によってはみ出した5文字は切り落とされます。

この状態で、うしろに「67890」と入力、確定します。

今度は、はみ出た部分が選択されました。このままボタンを押します。

maxlengthの制限を越えて10文字送信することに成功しました。

アラートをOKしたあと、さらに文字を増やして送信したり、1文字ずつ削除して再度送信(9文字、8文字、7文字……)する事もできました。

(;`ω´)……えっ?

バグなのか仕様なのか……バグであって欲しいなぁ。
あとは、maxlengthを100%信用せずに、送られてきた文字列の文字数は確認すべき、という感じでしょうか。

普通のSafariもだった

日本語入力している時にはみ出しました。

バグは報告済

らしいです(@itoooon調査による)。
https://bugs.webkit.org/show_bug.cgi?id=19479