DOBON.NET DOBON.NETプログラミング掲示板過去ログ

JavaScriptのconfirmを表示するには?

環境/言語:[環境(WindowsXP Pro)、使用言語(VB.NET2005)、.NET Frameworkのバージョン(2.0)]
分類:[ASP.NET]

お世話になります。

ボタン押下時に入力された値をチェックして入力エラー時にJavaScriptの
確認ダイアログ(confirm)を表示するにはどのようにしたらいいのでしょうか?

If str.ToString.Equals("") Then

End If

※印の箇所で確認ダイアログ(confirm)を表示したいと思って下記のように
記述していますがうまくいきませんでした。

If str.ToString.Equals("") Then
Page.RegisterStartupScript("確認", "<script language='JavaScript'>return confirm('値が入力されていません。' + vbCrLf + 'よろしいですか');</script>")
End If

どのように記述すればいいのでしょうか?
またASP.net2.0ではRegisterStartupScriptは使えないのでしょうか?

ご存知な方がいましたらご教授宜しくお願いします。
では、失礼します。
お世話になります。

ボタン押下時に入力の内容が誤りがあった場合にPage.ClientScript.RegisterStartupScriptで
JavaScriptを指定して確認ダイアログを表示する事はできましたが私が望んでいる動きになり
ませんでした。

If str.ToString.Equals("") Then
Page.ClientScript.RegisterStartupScript(Me.GetType, "確認", "<script language='JavaScript'>confirm('値が入力されていません。よろしいですか');</script>", False)
End If

確認メッセージの[OK]ボタンをクリックされたらそのままの処理を実行し、[キャンセル]ボタン
をクリックされたら処理を中断するようにしたいと思っています。

些細な事でも構いませんのでアドバイス宜しくお願いします。
では、失礼します。
お世話になります。

こんな事を書いたら怒られると思いますが本当に困っています。
皆さんのお知恵を貸して下さい。
宜しくお願いします。
何か進展がありましたら書き込みます。
では、失礼します
サーバで動的に判断したいといったとこでしょうか?

基本的にクライアントの処理とサーバの処理は分けて考えなければいけません。
クライアントのチェックはクライアントで済ませてサーバ処理での動的な応答は出来ないので
confirmを用意しておきキャンセルされたらそもそもサーバには投げないといった処理になるとおもいます。
回答、ありがとうございます。
全然、回答が無かったので...
本当にありがとうございます。
Googleで検索してヒットするページ閲覧していますが経験不足の私でも理解できる記事が見つかりませんでした。
JavaScriptで表示するまではできたんですがお恥ずかしい話、そこから先が正直わかりません。

> confirmを用意しておきキャンセルされたらそもそもサーバには投げないといった処理になるとおもいます。

上記の流れは理解していますがどのようにすれば[キャンセル]ボタンをクリックしたら処理を中断できるのでしょうか?
お世話になります。
進展がありました。
ダメ元でVBにあったMsgBox関数を記述してみたらできましたがASP.netではMsgBoxは使えないみたいな記事を見た事が...
ASP.net2.0から使えるんでしょうか?
ご存知な方がいましたらご教授宜しくお願いします。
では、失礼します。
お世話になります。

ネットで調べていたら下記のサイトを見つけました。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=31657&forum=7

MsgBoxは使えないのでしょうか?
どなたかご存知な方がいましたら宜しくお願いします。
では、失礼します。
回答がつかないから目立たせるという目的のみでスレッドを上げることはご遠慮ください。他の方の迷惑になります。

また、「急いでいる」とか「困っている」とかいった自分勝手な言い分を強調することもご遠慮ください。本当にお困りでしたら、マイクロソフトの「テクニカルサポート」や「アドバイザリーサービス」をご利用ください。

http://dobon.net/vb/bbs/index.html#irresponsible
お世話になります。
そんなつもりで投稿した訳では...
結果的には迷惑をかけたみたいですみませんでした。
これからは気をつけます。

この質問がまだ解決していないので解決済みのチェックをしていません。
宜しくお願いします。
こんなかんじですか?
http://d.hatena.ne.jp/aspx/20060823/1156261444
回答、ありがとうございます。

ちょっと違う感じします。
せっかく回答していただいたのに...
URLを開きましたがJavaScriptでconfirmって書いてありました。
という事はMsgBox関数は使えないという事なのかな?
はいどうぞ。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=31657&forum=7
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=32566&forum=36

個人的には mio さんのこの発言がすべてです。

> なんとなく、サーバサイドとクライアントサイドの違いが分かっていないような。
お世話になります。
回答、ありがとうございます。

>> なんとなく、サーバサイドとクライアントサイドの違いが分かっていないような。

変な質問をしてもいいでしょうか?
上記の内容はサーバーでメッセージ(MsgBox関数)を表示するか?クライアント(JavaScriptのconfirm)でメッセージを表示するかが解っていないって事でしょうか?
こんにちは。

> 上記の内容はサーバーでメッセージ(MsgBox関数)を表示するか?クライアント
> (JavaScriptのconfirm)でメッセージを表示するかが解っていないって事でしょうか?

基本的にはそういった解釈でいいと思います。
MsgBox は VB.NET の関数。サーバー(ASP.NET)で実行されます。
confirm は JavaScript の関数。クライアントのブラウザで実行されます。

「ダメ元でVBにあったMsgBox関数を記述してみたらでき」たのは、ASP.NET 2.0 か
ら導入された「ASP.NET開発サーバー」というもので動作しているからです。

それを「正しく」理解していれば「ダメ元でVBにあったMsgBox関数を記述」といったこ
とは考えないと思うのですが、理解されていますか?
# No.17225 のスレッドで「おもしろい人がいますね。」と揶揄されているのはそういう
# ことからです。


正しく理解していれば、No.17237 で Moo さんが示してくれたスレッドが参考になる
と思います。その上で「この点がわからない」と理解できない点を示せば皆さんが回
答してくださると思います。
自分であれば、form の onpost イベントのスクリプトで confirm を出して、OK なら
ば true を返す…と言った処理を記述します。
ASP.NET を活用するためには、 .NET Framework、HTML、JavaScript の全てを理
解しなければならないと思ってください。
ちょっと話が逸れるかもしれませんが、CustomValidatorを使えばお望みのことが実現できるように受け取れました。
おせわになります。
本当に皆さん、回答していただきまして本当にありがとうございます。

下記のような質問の内容に聞いてしまってすみませんでした。
ASP.net1.1ではMsgBoxが使用できないと言う記事がありましてので、ASP.net2.0でも
使用できないと思ってJavaScriptで確認メッセージを表示しようと試みましたが確認
メッセージのボタンの制御がどのようにしたらいいのか解らず、それでこのようなコ
メントを書いてしまいました。

> 「ダメ元でVBにあったMsgBox関数を記述してみたらできましたが・・・」

正直、サーバー側で確認メッセージを表示する方がいいと思ってMsgBox関数を使用する
事にしましたが、ネットで検索していたら下記のURLを見つけ、読んでいたら「かるあ
」さんの記事を見つけました。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=31657&forum=7

それで何でなんだろうと思って皆さんのお知恵を貸していただきたいと思って今日に
至って質問しています。サーバーの.NET Framework 2.0がインストールされていれば
MsgBox関数が使用できると思っています。

この点が引っかかっています。
長々とこのような質問をして申し訳ありませんが宜しくお願いします。
では、失礼します。
> サーバーの.NET Framework 2.0がインストールされていれば
> MsgBox関数が使用できると思っています。
>
> この点が引っかかっています。

本当に引っかかっているのはここなのでしょうか?

MsgBox関数を記述してみたらできたんですよね?
使えるかどうかの結論は出ていると思います。

使用できないのではなく期待した挙動をしないので
皆さん使用していないわけです。
(まぁぽぴ王子さんの投稿を理解していれば期待すらしないんですが)

ここで言う期待した挙動とは、
「画面にメッセージボックスが表示されること」です。
MsgBox関数を使用したページに

・ご自身の開発環境
・それ以外のPC

の両方からアクセスしてみてください。
なぜMsgBox関数ではダメかがわかると思います。
■No17303に返信(烏龍さんの記事)
> それで何でなんだろうと思って皆さんのお知恵を貸していただきたいと思って今日に
> 至って質問しています。サーバーの.NET Framework 2.0がインストールされていれば
> MsgBox関数が使用できると思っています。

全然理解できていませんね。
サーバーサイドとクライアントサイドというものを。

もう一度全部読み直すことを強くお勧めします。
それ以上、何も説明できないです。
Mooです。

以下のような実験をすればすぐにわかると思いますよ:p

1.VS2003もしくはVS2005(ローカルIIS)で新しいWebアプリを作成
2.ボタンを配置
3.ボタンが押されたらMsgBox表示するようコーディング
4.実行...
お世話になります。

Mooさん、回答ありがとうございます。

試してみたら下記のエラーが表示されました。

アプリケーションが UserInteractive モードで実行されていないときに、モーダル ダイアログまたはフォームを表示することは有効な操作ではありません。サービス アプリケーションからの通知を表示するには、ServiceNotification または DefaultDesktopOnly スタイルを指定してください。

やっぱり、JavaScriptで記述しないと確認メッセージは表示できないんですね。
やっとわかりました。
最初の質問に戻りますがJavaScriptのconfirmで確認メッセージのボタン(はい、キャンセル)の制御の仕方がご教授いただけませんでしょうか?
ではヒントだけ。

ボタンが押されたとき、メッセージボックス(Confirm)を表示して注意を促すには?
http://moo-asp.net/wiki/NWiki.aspx?page=TIPS%2f18
おはようございます。
お世話になります、烏龍です。

現在のソースは下記のように記述しています。
If strTel.ToString.Equals("") Then
Page.ClientScript.RegisterStartupScript(Me.GetType, "確認", "<script language='JavaScript'>confirm('電話番号が入力されていません。よろしいですか');</script>", False)
End If

Mooさんからいただいた下記のヒントを読みました。
onClick時に確認メッセージを表示していますよね!

> ボタンが押されたとき、メッセージボックス(Confirm)を表示して注意を促すには?
> http://moo-asp.net/wiki/NWiki.aspx?page=TIPS%2f18

[登録]ボタン押下時に、入力情報をデータベースに書き込みを行っています。
電話番号のテキストボックスは必須項目ではありませんが、入力されていない場合、確認メッセージを表示して[キャンセル]ボタンを押下したらデータベースの書き込みを中断して、電話番号を入力させてます。
[はい]ボタンを押下したら、そのままデータベースに書き込みを行うようなボタンの制御をしたいと思っています。

再度、宜しくお願いします。
Confirmで「はい」が選択されたら
ポストバックしてデータを更新したいのですね。

Javascriptでフォームをポストバックするには 
http://moo-asp.net/wiki/NWiki.aspx?page=TIPS%2f43

でしょうか。
おはようございます。
回答ありがとうございます。

すみません。
RegisterStartupScriptをRegisterClientScriptBlockに変更しました。

下記のように記述して各ボタンがクリックされた時にアラートが表示されるかを確認してみました。
---------------------------------------------------------------------
If strTel.ToString.Equals("") Then
Dim strScript As String = ""
strScript = "<SCRIPT language='JavaScript'>" & _
"var bolFlg = confirm('電話番号が入力されていません。よろしいですか');" & _
"if(bolFlg == true){" & _
"alert('[はい]ボタンがクリックされました。');" & _
"}" & _
"else{" & _
"alert('[キャンセル]ボタンがクリックされました。');" & _
"}" & _
"</SCRIPT>"

Page.ClientScript.RegisterClientScriptBlock(Me.GetType, "確認", strScript)
End If
---------------------------------------------------------------------

・[はい]ボタン押下時
 そのまま、処理を中断しないでDBに登録する。

・[キャンセル]ボタン押下時
 DBに登録しないで処理を中断する。

試しに[はい]ボタン押下時の処理の箇所にJavaScriptのSubmit()を記述して
動きを確認しました。入力値(テキスト)が空になりました。

再度、アドバイスとご教授宜しくお願いします。
では、何か進展がありましたら書き込むします。
では、失礼します。
onClick="return confirm('キャンセルを押したら処理を中断');"
^^^^^^

DOBON.NET | プログラミング道 | プログラミング掲示板