none
TextBoxコントロールのMaxLangth RRS feed

  • 質問

  •  

    こんにちは

     

    TextBoxの入力文字数の制限をする方法を調べています。

     

    TextModeがSingleLineの場合はMaxLengthを指定することでそれ以上の文字数は入らなくなりますが、

    同様のことをTextModeがMultiLineの時にできませんでしょうか。

     

    CustomValidatorで長さをチェックすることはできますが、できれば指定文字数以上入力できない方が

    ユーザにわかりやすいと思いまして。

    2008年2月21日 6:15

回答

  •  Z9M9Z さんからの引用

    TextModeがSingleLineの場合はMaxLengthを指定することでそれ以上の文字数は入らなくなりますが、

    同様のことをTextModeがMultiLineの時にできませんでしょうか。

     

    Webですよね。MultiLineはHTMLのTextAreaにレンダリングされますが、それにMaxLengthに相当する属性がないので無理です。

     

    2008年2月21日 7:05
  • やったことはありませんが JavaScript で頑張るしかないですね。

     

    ユーザーにわかりやすいと仰っている点についてですが、コピペや途中挿入の時にイライラするデメリットもあります。

    2008年2月21日 7:10
  • やはりCustomValidatorでチェックするのが無難そうですね。

    ありがとうございました。

     

    >コピペや途中挿入の時にイライラするデメリットもあります。

     

    その辺は難しいところだと思います。テキストが長いと怒られて後から削除するのもやっぱりイライラすると思うので。

    2008年2月21日 9:10
  • > これですとCustomValidatorで文字列チェックするのとほとんど同じですよね。

     

    いいえ、大きな違いがあります。

     

    クライアントのブラウザが DHTML をサポートしていると(IE6, IE7, FireFox など
    大多数のユーザーのブラウザがサポートしているはず)、入力検証コントロールは
    自動的に DHTML コードを出力します。この DHTML コードによってクライアント側で
    も入力データチェックが行われ、クライアント側ですべての入力チェックが OK だっ
    た場合に限ってポストバックが行われます。

     

    しかしながら、CustomValidator には DHTML コードを自動生成するような機能はな
    く、クライアント側でもチェックしたい場合は自力で DHTML コードを書いて実装す
    る必要があります。

     

    > そうではなくて入力時に制限まで達するとそれ以上文字が入力できなくなる
    > 仕組みが簡単にできないか探していました。

     

    ないと思います。

    2008年3月1日 6:37

すべての返信

  •  Z9M9Z さんからの引用

    TextModeがSingleLineの場合はMaxLengthを指定することでそれ以上の文字数は入らなくなりますが、

    同様のことをTextModeがMultiLineの時にできませんでしょうか。

     

    Webですよね。MultiLineはHTMLのTextAreaにレンダリングされますが、それにMaxLengthに相当する属性がないので無理です。

     

    2008年2月21日 7:05
  • やったことはありませんが JavaScript で頑張るしかないですね。

     

    ユーザーにわかりやすいと仰っている点についてですが、コピペや途中挿入の時にイライラするデメリットもあります。

    2008年2月21日 7:10
  • やはりCustomValidatorでチェックするのが無難そうですね。

    ありがとうございました。

     

    >コピペや途中挿入の時にイライラするデメリットもあります。

     

    その辺は難しいところだと思います。テキストが長いと怒られて後から削除するのもやっぱりイライラすると思うので。

    2008年2月21日 9:10
  • RegularExpressionValidator の ValidationExpression に正規表現を設定して
    文字数を制限するというのではダメでしょうか? 例えば下記のように。

     

    Code Snippet

    <asp:RegularExpressionValidator
        ID="msgRegExpVali"
        runat="server"
        ControlToValidate="msgTextBox"
        Display="Dynamic"
        ErrorMessage="本文は 1 ~ 2,000 文字の範囲にしてください。"
        ValidationExpression="^(.|\n){1,2000}$">*
    </asp:RegularExpressionValidator>

     

     

     

    外していたらすみませんでした。

     

    2008年2月21日 9:30
  •  SurferOnWww さんからの引用

    RegularExpressionValidator の ValidationExpression に正規表現を設定して
    文字数を制限するというのではダメでしょうか? 例えば下記のように。

     

     

    これですとCustomValidatorで文字列チェックするのとほとんど同じですよね。

    そうではなくて入力時に制限まで達するとそれ以上文字が入力できなくなる

    仕組みが簡単にできないか探していました。

    2008年3月1日 3:29
  • > これですとCustomValidatorで文字列チェックするのとほとんど同じですよね。

     

    いいえ、大きな違いがあります。

     

    クライアントのブラウザが DHTML をサポートしていると(IE6, IE7, FireFox など
    大多数のユーザーのブラウザがサポートしているはず)、入力検証コントロールは
    自動的に DHTML コードを出力します。この DHTML コードによってクライアント側で
    も入力データチェックが行われ、クライアント側ですべての入力チェックが OK だっ
    た場合に限ってポストバックが行われます。

     

    しかしながら、CustomValidator には DHTML コードを自動生成するような機能はな
    く、クライアント側でもチェックしたい場合は自力で DHTML コードを書いて実装す
    る必要があります。

     

    > そうではなくて入力時に制限まで達するとそれ以上文字が入力できなくなる
    > 仕組みが簡単にできないか探していました。

     

    ないと思います。

    2008年3月1日 6:37
  •  SurferOnWww さんからの引用

    しかしながら、CustomValidator には DHTML コードを自動生成するような機能はな
    く、クライアント側でもチェックしたい場合は自力で DHTML コードを書いて実装す
    る必要があります。

     

    > そうではなくて入力時に制限まで達するとそれ以上文字が入力できなくなる
    > 仕組みが簡単にできないか探していました。

     

    ないと思います。

     

    なるほど、詳しい説明ありがとうございます。そこまでは気が回りませんでした。

    2008年3月1日 13:25