片方の送信ボタンが押された時だけダイアログを表示する


動作ブラウザ 【 IE:4.0  NN:4.0
Internet Explorer Netscape Navigator DreamPassport iCab
3.0x 4.0x 4.5 5.0x 5.5 2.0x 3.0x 4.0x 4.x 6.0 2 3 2.x
Windows - - -
Macintosh - - -
UNIX - - - - - - - -
Dreamcast - - - - - - - - - - -

ポイント function check() { if (btnNo == 2) { return confirm("送信しますか?"); }else{ return true; } } <input type="submit" value="送信" onClick="btnNo=1"><br> <input type="submit" value="送信(ダイアログあり)" onClick="btnNo=2"><br>
説  明 片方の送信ボタンが押された時だけダイアログを表示するにはイベントのバブルアップ(伝達順序)を利用します。それぞれの送信ボタンにマウスボタンが押されたら変数に自分自身を示す値を入れます。フォームのonSubmitイベントで関数を呼び出しますが、その関数内で、どの送信ボタンが押されたかを変数を見て調べます。特定の送信ボタンだったら確認のダイアログを表示するようにします。イベントの伝達順序は最初に送信ボタンのclickイベント、次に親オブジェクトであるフォームにsubmitイベントが伝達されます。
サンプル <html> <head> <title>片方の送信ボタンが押された時だけダイアログを表示する</title> <script Language="JavaScript"><!-- btnNo = 0; function check() { if (btnNo == 2) { return confirm("送信しますか?"); }else{ return true; } } // --></script> </head> <body> <form onSubmit="return check()"> <input type="submit" value="送信" onClick="btnNo=1"><br> <input type="submit" value="送信(ダイアログあり)" onClick="btnNo=2"><br> </form> </body> </html>
補足説明 MacOS X Safariでも動作します。

■サンプルスクリプトを実行する >>実行
■各ブラウザでの動作結果を見る >>View!

写真素材 PIXTA