• ベストアンサー

削除ボタンの確認ダイアログを表示させると処理が進まない

いろいろ検索しましたが、回答が得られなかったため質問します。 削除ボタンを押した時、確認ダイアログを表示させ、 OKをクリックすると処理が進むようにしようと思っているのですが、 下記のコードだと、OKでもキャンセルでもonclickの処理に進まず困っています。 ■javascript function del_confirm(){ Ans = confirm(\"削除します\"); if(Ans==true){ alert(\"削除しました\"); return true; }else{ alert(\"キャンセルしました\"); return false; } } ■body <input type=\"submit\" value=\"チェックしたものを削除\" onmouseup=\"return del_confirm()\" onclick=\"action_delete.php\"> 間違ったところなどあればご指摘お願い致します。 わからないことがあれば追記しますので、 よろしくお願い致します。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

こんなかんじ? function del_confirm(f){ Ans = confirm("削除します"); if(Ans==true){ alert("削除しました"); f.action="action_delete.php"; return true; }else{ alert("キャンセルしました"); return false; } } ■body <input type="submit" value="チェックしたものを削除" onclick="return del_confirm(this.form)"> ちなみに、「削除しました」と表示してから削除の作業にはいるので 正しいロジックではないと思いますが・・・

yuki_tgs
質問者

お礼

回答ありがとうございます。 this.form で現在の form の name を読み取って、 f.action で飛び先を変更するわけですね。 大変参考になりました。ありがとうございました。 「削除しました」表示については、 ロジック的にも問題ないように変更しようと思います^^;

その他の回答 (1)

  • wp_
  • ベストアンサー率54% (132/242)
回答No.1

いや、締め切っちゃダメじゃん^^; とりあえずこっちで。 -- onmouseupとonclickですが、当方IE6とfx1.5で確認した限りでは <input type='button' onclick='alert(1)' onmouseup='alert(2)' /> IEマウスクリック: alert(2) IE Enterキー押下: alert(1) FXマウスクリック: alert(2),alert(1) FX Enterキー押下:alert(1) となります。fx2.0も1.5系列とたぶん同じ挙動をするでしょう。 onmouseupが呼ばれない場合を考慮し、onmouseupは使用しない方が賢明と思われます。 // そもそもイベントハンドラは相互で関連しあうように設計されているとは限りません。

yuki_tgs
質問者

お礼

補足したのに締め切ってしまいました・・・重ね重ね申し訳ありません。 書込み時に二重書込みになってしまったのが、 思わぬところで役立ちました。 回答、ありがとうございました。 優先順位は onmouseup>onclick となっているという情報があったので、 優先順位の順番に処理を進めてくれるかと思っていたのですが、 状況によって挙動が変わってしまうのですね。 勉強になりました。確認してくださってありがとうございました。

関連するQ&A