- - PR -
ASP.NET 複数のButtonで別々の入力必須の検証を行わせるには?
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-01-11 16:13
お世話になります。
ページにTextBox1、TextBox2、Button1、Button2とあります。 Button1クリック時には、TextBox1に入力されているかどうか Button2クリック時には、TextBox2に入力されているかどうか をチェックしたいと思い、RequiredFieldValidatorを使用してみました。 しかしどちらのButtonをクリックしても、両方のTextBoxを検証してしまいます。 RequiredFieldValidatorではこのようなことを行うのは無理なのでしょうか? (無理であれば、検証するスクリプトを自前で書こうと思っております・・・) | ||||
|
投稿日時: 2005-01-11 21:43
はい、無理です。スクリプトを自前で用意してください。
とはいっても、Validatorコントロールそのもは使えます。有効/無効のプロパティを切り替えれば良かったような? ちなみに、私はページをロードしたときに検証したいコントロールがわかっているので、検証するコントロール配列への登録を行うようなスクリプトを書きました。 # クライアント検証の話し _________________ | ||||
|
投稿日時: 2005-01-12 16:09
ありがとうございます。
はっきり無理だとわかってすっきりしました。 単なる入力必須チェックなので、ボタンのonklickにスクリプトを書いて対応しました。 その後、ASP.NETが吐き出すHTMLとスクリプトを調べ、そのままでは無理だと言うことに納得できました。 スクリプトの関数がないなぁと思ってたらファイル(WebUIValidation.js)になってたのね>< それを見て検証のカラクリがわかりました(ような気がしました)。 Jittaさんのおっしゃる「検証するコントロール配列」というのは、 WebUIValidation.jsの中のPage_Validatorsを指すのかな? | ||||
|
投稿日時: 2005-01-14 05:55
http://www.atmarkit.co.jp/fdotnet/dotnettips/251aspdisablevalid/aspdisablevalid.html に解決方法が掲載されています。 _________________ ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集 | ||||
|
投稿日時: 2005-01-18 19:13
情報ありがとうございます。
上記のリンクでの解決方法ですと、ボタンクリックでポストバックが発生した後にサーバーサイドで検証コントロールの有効、無効を切り替えていますね。 私は、ポストバックが発生することなくクライアントサイドでの検証をしたかったもので、 上記方法は採用できませんでした。 | ||||
|
投稿日時: 2005-01-18 21:27
すみません、ソースをよく見ると、 ・StartupScriptへ、すべての検証コントロールのenabledをfalseにするスクリプト吐き出し ・各ボタンのonclickに、検証対象のみenabledをtrueにする関数を呼び出す (この関数に吐き出すコントロールを配列で保持) ・enabledをtrueにしたら、Page_ClientValidate関数を呼び出す (この関数は検証コントロールがあると追加される) と言うことをやっていました。 サーバ側でページを処理しているときは、検証コントロールが有効なのでPage_ClientValidate関数が追加されます。それをクライアント上ですべての検証コントロールを無効にすることで、この関数がコールされてもすべての検証は行われません。これでは困るので、ボタンによって必要な検証コントロールのみ有効にします。 _________________ | ||||
|
投稿日時: 2005-01-19 08:52
マイクロソフトは、この問題を認識していたようです。
ASP.NET 2.0では、検証コントロールにValidationGroup属性を追加することにより 解決しています。 http://www.atmarkit.co.jp/fdotnet/asp2review/asp2review06/asp2review06_01.html _________________ ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集 | ||||
|
投稿日時: 2005-01-25 11:46
Jittaさん、Accessさん、ありがとうございます。
Jittaさんの方法はクライアント側で検証できるような気がするので、今後機会があったら後挑戦してみます。 ASP.NET 2.0で万事解決するのですね。 最初から入れといてくれ>まいくろしょふと |
1