HTMLのTEXTAREAで文字数の入力制限はできるか?!

結論:サーバーサイドでチェックしる!!(笑)
英数字のみなら完全に入力時に制限かけられるんですが、日本語入力になると制限できないんですよね。
制限する方法を知らないと言ったほうが正しいのかな?(知ってる人いたら教えて〜)
とりあえず半角だけ制限する方法をば

function lengthLock( target, length ) {

    // Ctrl無効化
    if ( event.ctrlKey ) {
        return false;
    }

    // BackSpace, TAB, Delete, Left, Right, Up, Downは許可
    if ( event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 46 ||
         event.keyCode == 37 || event.keyCode == 39 || event.keyCode == 38 || event.keyCode == 40 ) {
        return true;
    }

    if ( target.value.length >= length ) {
        return false;
    }
}

使い方
<textarea name="test" onKeyDown="return lengthLock( this, 5 );"></textarea>
<
注意する点は
  • Ctrl + Vで貼り付けられないようにする
  • 右クリック→貼り付けができないようにする
  • BackspaceやDeleteキーその他カーソルキーは使えるようにしなければならない
  • 文字数なのかバイト数なのかによっても違う
  • 改行はtext.lengthだと2となる
などなどさまざまな問題があります。 JavaScriptでの入力チェックはあくまで入力を補助するもので、 本格的な入力チェックは全てサーバーサイドでやりましょう! 余談 IE限定で右クリックを簡単に禁止する方法