• ベストアンサー

confirmのOK・キャンセルを押した後の操作制御

いつもお世話になっています。 <script language="JavaScript"> <!-- function startConfirm(){ confirm("本当によろしいですか?"); } // --> </script> </head> (中略) <form action="next.asp" target="_top" name="me"> <td> <input TYPE="submit" value="全削除" name="all_del" onclick="startConfirm()"> </td> </form> と、このようなボタンを押したときに確認メッセージを表示させています。 キャンセルを押した場合にnext.aspに遷移せず、自分の画面に戻る または他の画面に遷移させたいのです。 startConfirm()の中に処理を書けば良いのでしょうが、哀しいかな、わかりません(涙)。 やり方をご存知の方、教えてください。 alertでOKを押された時の処理を任意に行う方法も教えていただけたら嬉しいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • xruz
  • ベストアンサー率50% (72/143)
回答No.3

こんにちはさん、xruzです。 submitボタンにこだわらずscriptでsubmit()すれば柔軟に対応できますよ。 こんな感じではいけませんか? <html> <head> <title>submit</title> </head> <script language="javascript"> <!-- function frmSubmit() { var errFlag=true; // チェックとか処理とかをします if(errFlag==false) { // alert("Err"); // エラー処理かな return; } if(confirm("Send Ok?")) { // document.frm.target="main"; // 表示先の変更 // document.frm.action="hoge.asp"; // リンク先の変更 document.frm.submit(); } else { // this.location.href="jump.cgi"; // キャンセルした場合のリンク先? } } //--> </script> <body> <form method="post" action="" name="frm" target="_self"> <input type="button" value="send" onclick="frmSubmit();"> </form> </body> </html> がんばってくださいね。

lovelypooh
質問者

お礼

本当に丁寧な回答、ありがとうございます。 お礼が大変遅くなってすみませんでした・・・。 貼り付けたら見事に動きました(当たり前だ)。感動です。 コメントもつけて頂いていたので、どこに何を書いたらどう動くのかすぐわかり、 これまた大変ありがたかったです。 このコメント付きのソースを色々加工させて頂いて、 さらにややこしいエラー処理などに挑戦したいと思います。 また機会がありましたら、教えてやって下さい(ペコリ)。

すると、全ての回答が全文表示されます。

その他の回答 (2)

noname#99638
noname#99638
回答No.2

まず、confirm()の使い方ですが戻り値を使います if(confirm("いいですか~")==true){  // OK ボタンが押されたときの処理 }else{  //キャンセルボタン が押されたときの処理 } 次に、画面遷移についてですが、 >input TYPE="submit" value="全削除" name="all_del" onclick="startConfirm()"> の意味は「全削除」ボタンを押したら、(確認してOKだったら)フォームの内容を送信するということでしょうか? だとすると、FORMタグのonSubmitイベントハンドラに書くのが一般的です <FORM NAME="formmname" ACTION="送信先" onSubmit="return startConfirm()"> <INPUT TYPE="submit" VALUE="全削除"> </FORM> …ここまで書いてたら、下記にずばりな回答がありましたので、これは補足で見て下さい。

lovelypooh
質問者

お礼

早速の回答、ありがとうございます。 なのにお礼が遅くなってすみません・・・。 画面遷移の <input TYPE="submit" value="全削除" name="all_del" onclick="startConfirm()"> の意味もkana-tanさんの想像通りです。 今までsubmitボタンの中にonClickで書くとばかり思ってました。 onSubmitで書くのは、enterキーを押した時でも動作できるようにするためなのでしょうか? あと、補足だなんてとんでもないです。 キャンセルボタンが押された時の処理を行う方法を書いて頂いてありがたかったです。 かなり利用できる発想を頂きました。 また機会がありましたら、よろしくお願いします(ペコリ)。

すると、全ての回答が全文表示されます。
  • yuizuian
  • ベストアンサー率42% (103/245)
回答No.1

confirmはOKボタンが押された時にtrue、キャンセルボタンが押された時にfalseが返ってきます。 これを利用して フォームタグを <form action="next.asp" target="_top" name="me" onSubmit="return startConfirm()"> スクリプトを function startConfirm(){ return (confirm("本当によろしいですか?")); } という風にすれば、押されたボタンの結果が返り、OKならnext.aspが呼び出されるという感じになります。 alertは、フォームの記述が上と同じだった場合、 表示した後にtrueを返すとnext.aspを実行、 falseを返すとそのまま何も実行しない。 というどうさになります。

lovelypooh
質問者

お礼

早速の回答、ありがとうございました。 返事が遅くなってすみません・・・。 貼り付けるだけでできました。 丁寧かつ親切な回答で助かりました。 また機会があったら教えてやって下さい(ペコリ)。

すると、全ての回答が全文表示されます。

関連するQ&A