- - PR -
ASP.NETでボタンのクリック時に確認メッセージを表示するには?
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-04-18 13:15
記事「.NET TIPS: ASP.NETでボタンのクリック時に確認メッセージを表示するには?」で、onclick 属性にスクリプトを結び付けています。
この例ではボタンしかありませんから、それでも問題ありませんが。 一般的には、フォームの送信時に確認メッセージを出したいでしょうから、form 要素の onsubmit 属性に結びつけるほうがよいかと。 onsubmit 属性: http://www.w3.org/TR/html4/interact/scripts.html#adef-onsubmit http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/interact/scripts.html#adef-onsubmit | ||||
|
投稿日時: 2003-04-18 13:34
検証コントロール(*Validator)を配置している時に、
この記事と同じようにonclick属性に書き込んだんですが、 対象のボタンがCauseValidation = trueの時、 生成されたhtmlはValidatorの機能しかありませんでした。 検証コントロールと共存する方法を どなたかお知りの方はいらっしゃいませんか? _________________ | ||||
|
投稿日時: 2003-04-18 13:39
すいません追記です。
上記の失敗の時は、 ValidationSummaryコントロールも配置していました。 _________________ | ||||
|
投稿日時: 2003-04-18 17:46
2回目の回答を参照してください。 [ メッセージ編集済み 編集者: Mr.ADO.NET 編集日時 2003-04-18 20:13 ] | ||||
|
投稿日時: 2003-04-18 18:24
せんべいです
私も悩んだのですが、CauseValidation = falseにして、 onclick="if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate(); "をまず消します。 そして、 Button1.Attribute.add("onclick") = "messageFunction();if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate();" とします。もちろん、Button1は押下により確認メッセージを出すボタンコントロールです。 messagFunction();はメッセージを出すJavaScriptの関数です。 これで大丈夫だと思います。消して、またわざわざ付ける。 これしか、回避索はないと思います。 [ メッセージ編集済み 編集者: せんべい 編集日時 2003-04-18 18:26 ] | ||||
|
投稿日時: 2003-04-18 18:35
Editorの遠藤です。
いろいろご指摘ありがとうございます。 >この例ではボタンしかありませんから、それでも問題ありませんが。 >一般的には、フォームの送信時に確認メッセージを出したいでしょうから、 >form 要素の onsubmit 属性に結びつけるほうがよいかと。 onsubmitにつけると、formにボタンが複数ある場合にはどれを押しても メッセージが出てしまうので、とりあえずonclickに設定する方から 記事にしてみました。 ■ >検証コントロールと共存する方法を >どなたかお知りの方はいらっしゃいませんか? これについては、 Webサーバコントロールボタンのonclickについて のスレッドでも話題になっていますね。 .NET Framework 1.0ではバグっていて、1.1ではNothingButXMLInfoSet氏が 指摘されているように修正されています。 が、onclickで、return confirm()を付けてしまうと、それがvalidationより 前に来てしまってそこでreturnしてしまうので、正しく検証されないようです。 (alertでメッセージを出すだけならよいのですが) Renderメソッドをオーバーライドして無理やり順番をコードで指定してしまう こともできるようですが・・・ ■ ちなみに、クライアント側だけでvalidationする場合には、onsubmitにもその ためのコードが追加されるようなのですが、RegisterOnSubmitStatementで onsubmitにreturn confirm()を追加しても、これが先にきてしまいます。 この場合にはformのAttributesにより、onsubmitにreturn confirm()を設定 すれば、validationの後ろに追加されるようです。 ■ ということで、現在いろいろ調査中です。 スマートなやり方をご存知の方がいらっしゃいましたら、ぜひお知らせください。 .NET TIPSでまとめさせていただきます PS. >消して、またわざわざ付ける。 あんまりスマートじゃないような・・・ | ||||
|
投稿日時: 2003-04-18 20:11
>>消して、またわざわざ付ける。
>あんまりスマートじゃないような・・・ ASP.NETが生成したJavaScriptをプログラムで書き換えるのは バージョンアップ時動作しない可能性がありますので お勧めできません。 あまりスマートではないのですが、<input type=button> を使う方法もあります。 この場合、onClickイベントは競合しません。
[ メッセージ編集済み 編集者: Mr.ADO.NET 編集日時 2003-04-18 20:19 ] |
1