4

HTML5 (またはあまり好ましくない JavaScript) を使用して、の最大長をinput特定のバイト数に制限することは可能ですか?

次の方法で文字数を制限できることに気付きました。

<input type="text" maxlength="4" />

しかし、全角文字を 4 文字まで入力できるので、それだけでは十分ではありません。

明らかに、私はこれをサーバー側で検証していますが、ブラウザ側でもこれを望んでいます。

編集:明確にするために、UTF-8 をサポートできるようにしたいと考えています。申し訳ありません@elclans。

4

2 に答える 2

1

このスクリプトには、クリーンアップできるいくつかの小さな UX の不具合がありますが、クロムでテストしたときに概説した基本的なタスクを実行します。

<input id=myinp />


<script> // bind handlers to input:
   myinp.onkeypress=myinp.onblur=myinp.onpaste= function vld(e){
     var inp=e.target;
     // count bytes used in text:
     if( encodeURIComponent(inp.value).replace(/%[A-F\d]{2,6}/g, 'U').length > 4){
        // if too many bytes, try to reject:
        e.preventDefault;
        inp.value=inp.val||inp.value;
        return false;
     }
     // backup last known good value:
    inp.val=inp.value;
   }

</script>
于 2013-06-05T21:45:46.277 に答える
0

見積もりが十分でない場合は、すべての非シングルバイト文字をフィルタリングしてカウントします。

于 2013-06-05T21:06:37.420 に答える