仕事でいろいろやってたら、なんかみつけました。環境は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