• ベストアンサー

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

  • 別フォームの値を取得したい

    カテゴリーが、HTMLなのかASPなのか、判断がつかないので、とりあえず「その他」に投稿します。 説明が難しいので、わかりにくいと思いますが、よろしくお願いします。 (用語の使い方や表現が間違ってたらすみません) 一つの画面にフォームが二つあり、FORM1へsubmitすると、選択したファイルのダウンロードを行い、別ブラウザ上に表示します。画面は遷移しません。 FORM2へsubmitすると、別画面へ遷移して処理を行います。 別画面に遷移後、FORM1のselect部品のoption値を取得したいのですが、どうしたらいいでしょうか? selectでなければ、hidden属性の部品をFORM2内に設定しておいて、FORM2_OnSubmit()内でセットしてやればいいと思うのですが、selectだと配列になりますよね?(Request.Form("SELECT")(i)といった形式) selectのoption数は動的に変わるので、いくつあるかはsubmitするまでわかりません。 コーディングは、こんな感じです。 <script language="JavaScript"> function DLFunc(f){ ・・・(略)・・・ f.target = ""; f.submit(); } </script> <script language="VBScript"> Sub FORM2_OnSubmit() ・・・(いろいろ処理)・・・ End Sub </script> <form name="FORM1" method="POST" action="DL.asp"> <select name="SELECT" size="5"> <option value="1">ファイル1</option> ・・・(option数は動的に変わる)・・・ </select> <input type="button" value="ダウンロード" OnClick="DLFunc(this.form)"> </form> <form name="FORM2" method="POST" action="Next.asp"> <input name="XXX"> ・・・(以下略)・・・ <input type="submit" value="実行"> </form>

  • POST送信かGET送信か

       ------------------------------------------ <SCRIPT language="JavaScript"><!-- function GoPage(url, id){ document.form.action = url; document.form.id.value = id; document.form.submit(true) } // --></script> <!--中略--> <input type="submit" name="submit" value="送信" onClick="javascript:GoPage("a.php", "1")">    ------------------------------------------    上記のような処理を書いた場合、 遷移先である a.php で id(値:1)を取得する時は POSTで受け取るのですか?それともGETでしょうか?   

  • confirmで選択してsubmitする内容を変える

    confirmで確認して「OK」なら普通にsubmitさせ、「キャンセル」なら、パラメーターを変更して実行させたいのですがアドバイスを。kubun=gakuseiは前ページから引いて来ています。★の部分はやりたいことを書いただけですが、このようなことを実行するにはどうしたらよいでしょうか。cgiだけではできるのですが、javascriptが混じると混乱状態・・。 <script language="JavaScript"> function myEnter(){ myRet = confirm("本当に学生ですか"); if ( myRet == true ) {★sample.cgi?kubun=gakusei]実行★;} else {★sample.cgi?kubun=sonota]実行★;} } </script> <FORM ACTION="sample.cgi" METHOD="POST"> <input type="text" name="氏名"> <INPUT TYPE="SUBMIT" onclick="myEnter()"></form>

  • 「本当に削除しますか」が正常に動作しない

    このスクリプトで「本当に削除しますか?」のダイアログでキャンセルを押してもYahoo!に飛んでしまうんですが、 どうすればいいでしょうか? <script language="JavaScript"> function kakunin(frm) { flag = confirm("本当に削除しますか?"); if (flag) { alert(flag); frm.submit(); } } </script> <form action="http://yahoo.co.jp/" method="get"> <input type="hidden" value="00001" name="num"> <input type="submit" value="削除" name="delete" onClick="return kakunin(this.form);return false;"> </form>

  • submitの分岐

    同じform内に、ラジオボタンとサブミットボタンを配置してあります。 ラジオボタンを押された時は自分をsubmit、ボタンが押された時にはsubmitして次の画面へ遷移したいのですが、分岐の方法がわかりません。 <form action="next.htm" method="post"> とやってしまうと、ラジオボタンが押された時にもnext.htmへ遷移してしまいます。 苦慮の結果JavaScriptで、ボタンを押された時にhiddenにフラグをたてておいて、 そのフラグに値が入っていれば <form method="post">、 入っていなければ<form action="next.htm" method="post">、 という分岐処理を書いたのですが、やはり両方next.htm画面へ遷移してしまいます。 お知恵を貸していただけないでしょうか。 ちなみに下記のようなスクリプトを書きました。 ----------------------------------------------- <script language="JavaScript1.2"> <!-- function chk_sub{ document.form.hdnChkFlg.value="1"; window.document.form.submit(); } //--> </script> <if form.hdnChkFlg="1"> <form method="post"> <else> <form action="next.htm" method="post"> <end if> <input type="radio" name="chkSitei" checked onclick="return chk_sub value="1">aaa</input> <input type="hidden" name="hdnChkFlg" value=""> <input type="submit" value="次へ"> </form> 宜しくお願いいたします。

    • ベストアンサー
    • HTML
  • 次画面への受け渡し

    お世話になります。 1の画面から、2の画面へ遷移します。 1の画面でのボタン押下により、hiddenの内容を2の画面に渡し、2の画面のボタン押下で受け渡しているか確認したいのですが、やり方がわかりません。 下に試したものをのせておきます。 あと、書き方で問題があったり、こうした方がいいという注意もしてくださると助かります。 単純なJavaScriptだと思うのですが、初心者でどうしたらいいかもわかりません。助けてください。 1の画面: <HTML> <HEAD> <script language="JavaScript"> <!-- function selEvent(selID){ document.frmAct.fuseaction.value = selID; alert(selID); } --> </script> </HEAD> <BODY> <form name="frmAct" method="post" action="form_action2.html"> <INPUT TYPE="submit" VALUE="新規登録" onClick="selEvent(1);"> <INPUT TYPE="submit" VALUE="ID検索" onClick="selEvent(2);"> <INPUT TYPE="hidden" NAME="fuseaction" VALUE=""> </form> </BODY> </HTML> 2の画面: <HTML> <HEAD> <script language="JavaScript"> <!-- function kakunin(){ alert(document.frmAct.fuseaction.value); } --> </script> </HEAD> <BODY> <form name="frmkaku" method="post" action="xxx.html"> <INPUT TYPE="button" VALUE="確認" onClick="kakunin();"> </form> </BODY> </HTML>

  • onClickで関数呼出し後に、結果に応じてsubmitを実行する方法

    JavaScriptで、 function func() {  if (a==0) {   alert("処理しない");   return false;  }  return true; } と、a=0ならfalseを返し、それ以外ならtrueを返す関数を定義しています。 そして、FORMタグで <FORM NAME="FormName" ACTION="next.html"> <INPUT TYPE="button" VALUE="next" NAME="button1" onClick="return func();submit();"> </FORM> と記述しています。 要は、ボタンを押下した際にfunc関数がtrueを返せば、next.htmlに 遷移させたいのですが、上記記述では、遷移しません・・・ onClick部分にonClick="return func(),submit();"と記述した場合、 func関数の実行結果がtrueでもfalseでも遷移してしまいます。 そこで、なんとなくonClick="return func()&&submit();"と記述してみたところ、 func関数がtrueの時のみうまく遷移するようになりました。 これは偶然そう動作しているのでしょうか、それとも上記は正しい記述方法なのでしょうか? 正しい記述方法ならいいのですが、上記以外に正式な記述方法があれば 教えていただけないでしょうか? ※TYPE="submit"にすればいいとは思うのですが、buttonで実現したいと 考えております。

  • javascript confirmでFORM送信

    javascript confirmにて「この点数で良ければ送信する」というものを考えています。 この点数部分は変数になる予定であり、javascript内部で生成されます。 まずは、変数ではなく固定値として、javascriptの中にある数値を<form></form>の中に生成することを考えましたがいきなりつまずきました。 「100という数値を送信」するつもりだったのですが、うまく送信することが出来ません。 どこを修正すればいいかご教示いただきたくお願いいたします。 <html> <head> <title>submit</title> </head> <script language="javascript"> <!-- function frmSubmit() { var errFlag=true; if(errFlag==false) { return; } if(confirm("100点です。送信しますか?")) { document.frm.submit(); document.getElementById("plus").value ="100"; } else { } } //--> </script> <body> <form method="post" action="form.cgi" name="frm" target="_self"> <input type="HIDDEN" id="plus" value="" /><br /> <input type="button" value="send" onclick="frmSubmit();"> </form> </body> </html>

  • INPUT TYPE=""submit"" の disabled をJavascriptで操作したい

    ご教授、お願いします。 <!-- function Kyoka(){ if(document.form02.ch_on.checked) { alert (""); document.form02.ilai2.disabled = false; } else { document.form02.ilai2.disabled = true } { // --> とスクリプトを記述し <TD><INPUT TYPE="checkbox" NAME="ch_on" VALUE="" onclick="Kyoka()"></TD>" <TD><FONT COLOR=green><INPUT TYPE="submit" name="irai2" VALUE="依頼" onClick="javascript:location.reload()"></TD>" と、body内に記述しています。 このとき、チェックボックスにチェックを入れると、アラートは表示されますが、その後でエラー(IEの右下のバーに「!」が表示)になります。 数時間悩みましたが、わかりません。 どなたかご教授頂けませんでしょうか? よろしくお願いします。 また、submitボタンのon/offをjavascriptを使わずに行う方法が、あるのでしょうか? もしあれば教えて頂ければ、幸いです。

  • インラインフレーム内を送信する

    インラインフレーム内(test.asp)で送信して、main.aspに情報を引き渡したいのですがうまくいきません。 現状、下記のようなかんじで実行するとインラインフレーム内にmain.aspの内容が表示されてしまいます。 /* main.asp */ <IFRAME src="test.asp"></IFRAME> /* test.asp */ <SCRIPT LANGUAGE="JavaScript"> function change(num){   document.form_1.action="main.asp?no=<%=num%>";   document.form_1.submit(); } </SCRITP> <BODY> <FORM name="form_1"> <TABLE> <TR id="t1" onClick="change(1)"> <TD align="center">1</TD> <TD align="center">aaaaaa</TD> <TD align="center">bbbbbb</TD> </TR> </TABLE> </BODY> どのような状況か伝わりにくいと思いますが、何かよい方法があればよろしくおねがいします。

専門家に質問してみよう