1. ホーム
  2. asp.net

[解決済み] 複数行のテキストボックスの最大長を指定する

2023-05-13 04:37:37

質問

私はaspを使おうとしています。

<asp:TextBox ID="txtInput" runat="server" TextMode="MultiLine"></asp:TextBox>

を指定する方法が欲しい。 maxlength プロパティを指定する方法が欲しいのですが、どうやら multiline textbox . 私は、いくつかのJavaScriptを使って、この onkeypress というイベントが発生します。

onkeypress="return textboxMultilineMaxNumber(this,maxlength)"

function textboxMultilineMaxNumber(txt, maxLen) {
    try {
        if (txt.value.length > (maxLen - 1)) return false;
    } catch (e) { }
    return true;
}

このJavaScript関数の問題は、正常に動作するものの、文字を書き込んだ後、その文字を削除したり置換したりすることができない点で、この動作は望ましくはないものです。

それを避けるために、上記のコードで何を変更できるか、またはそれを回避する他の方法をご存知ですか?

どのように解決するのですか?

このJavascriptを試してみてください。

function checkTextAreaMaxLength(textBox,e, length)
{

        var mLen = textBox["MaxLength"];
        if(null==mLen)
            mLen=length;

        var maxLength = parseInt(mLen);
        if(!checkSpecialKeys(e))
        {
         if(textBox.value.length > maxLength-1)
         {
            if(window.event)//IE
              e.returnValue = false;
            else//Firefox
                e.preventDefault();
         }
    }   
}
function checkSpecialKeys(e)
{
    if(e.keyCode !=8 && e.keyCode!=46 && e.keyCode!=37 && e.keyCode!=38 && e.keyCode!=39 && e.keyCode!=40)
        return false;
    else
        return true;
}

コントロール上ではこのように呼び出します。

<asp:TextBox Rows="5" Columns="80" ID="txtCommentsForSearch" MaxLength='1999' onkeyDown="checkTextAreaMaxLength(this,event,'1999');"  TextMode="multiLine" runat="server"> </asp:TextBox>

javascriptの実装では、checkSpecialKeys関数を使って入力の検証をするだけでもよいでしょう。