0

TextArea の長さを 2 文字に制限する必要があります。私はたくさんの答えを見つけました。これらの回答を読んで、次のコードに到達しました。「keydown」と「keyup」のイベント ハンドラがあります。

  1. これで十分で正しいと思いますか?
  2. すべての主要なブラウザで動作しますか?

http://jsfiddle.net/Lijo/VAYze/1/

  1. 注: エラー メッセージを表示する必要はありません。したがって、正規表現の検証は私にとって良い選択肢ではありません。
  2. 注:私は既存のコードに基づいた回答を探しています - まったく新しい回答ではありません
  3. 注: キー コードは、http://www.asquare.net/javascript/tests/KeyCode.html および http://www.asquare.net/javascript/tests/KeyCode.html から参照れます。

アップデート

テキストをテキスト領域に処理するためdraggedの jQuery ソリューションが見つかりません。regular expression validatorwith EnableClientScript="false"にする予定です。サーバー側でのみ検証されます。これは、既存の jQuery 操作をバイパスしたものを処理するためです。 複数行のテキスト ボックスの ASP 正規表現バリデーター

jQuery

$(document).ready(function () {


var maxLength = 2;

$('.multiline').keydown(function (e) {


    var existingText = $(this).val();
    var existingLength = existingText.length;

    if (existingLength >= maxLength) 
    {
        if (maxLength > 0) 
        {

            if (!checkSpecialKeys(e)) 
            {
                $(this).val(existingText.substring(0, maxLength));
                 $(this).css('color','red');

                //Newly entered character not rendered since false is returned
                e.preventDefault();
            }
        }
    }

  });


//To trim the text if a paste happens
$('.multiline').keyup(function (e) {

    var newText = $(this).val();
    var newLength = newText.length;

    if (newLength > maxLength) {
        if (maxLength > 0) {
            $(this).val(newText.substring(0, maxLength));
            $(this).css('color','red');
        }
    }

});


}
);


function checkSpecialKeys(e) 
{
if (e.keyCode >= 48 && e.keyCode <= 90) 
{
    return false;
}

if (e.keyCode >= 96 && e.keyCode <= 111) 
{
    return false;
}

else 
{
    return true;
}
}
4

1 に答える 1

1

あなたの要件から、テキストエリアで maxlength 属性を使用する必要があるとしか言えません。これにより、JavaScript コードが節約され、テキストを入力にドラッグするなどの特別なシナリオが処理されます。また、ブラウザ機能なので高速です。テキストエリアをサポートするすべてのブラウザでサポートされています。

例:

<textarea maxlength="2"></textarea>

maxlength はテキストエリアの新しいプロパティです。すべてのブラウザーでサポートされているわけではありません... ( Source )

ごめん

于 2012-12-07T10:09:47.063 に答える