• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:削除確認のアラートを出したい)

削除確認のアラートを出したい

このQ&Aのポイント
  • フォームから削除したい項目を選択し、削除ボタンを押すとアラート画面が表示されます。キャンセルを押すと戻り、OKを押すとデータが削除されます。
  • JSを使用してフォームからPOSTされた内容をアラート画面に表示する方法を教えてください。
  • 現在のコードでは削除確認のアラートが表示されず直接データが削除されてしまいます。どのように修正すればいいでしょうか。

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

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

あ、1個の場合もあるのですね。 そのへんちょっと面倒なのですが、同名のチェックボックスがある場合と 1つの場合は、javascriptはデータの持ち方が明確に違うのです。 なので以下のような処理をいれるとよいでしょう。 <html> <head> <script language=javascript> function chk_del(f){ var str=""; if(f["del[]"].length==undefined){ var del=new Array; del[0]=f["del[]"]; }else{ var del=f["del[]"]; } for(var i=0;i<del.length;i++){ if(del[i].checked) str+=(str==""?"":",")+del[i].value; } if(str!="") return confirm('これらの情報を削除します。よろしいですか?('+str+')'); alert('チェックされてません'); return false; } </script> </head> <body> <form method="post" action="delete.php" onSubmit="return chk_del(this);"> <input type="checkbox" name="del[]" value="1">1番<br> <input type="checkbox" name="del[]" value="2">2番<br> <input type="checkbox" name="del[]" value="3">3番<br> <input type="checkbox" name="del[]" value="4">4番<br> <input type="checkbox" name="del[]" value="5">5番<br> <input type="checkbox" name="del[]" value="6">6番<br> <input type="checkbox" name="del[]" value="7">7番<br> <input type="submit" value="削除" name="delete"> </form> <hr> <form method="post" action="delete.php" onSubmit="return chk_del(this);"> <input type="checkbox" name="del[]" value="1">1番<br> <input type="submit" value="削除" name="delete"> </form> </body> </html>

nyalio
質問者

お礼

おー!助かります。 del.length=nullでテストしてたんですけど、 そうするとなぜかconfirmが出ずにdeleteされてしまって困ってました。 そのままundefinedでもいいんですね。 1度ならず2度までも、ご助力感謝します。 ありがとうございました。

その他の回答 (1)

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

こんな感じでやってみてはどうですか? <html> <head> <script language=javascript> function chk_del(f){ var str=""; var del=f["del[]"]; for(var i=0;i<del.length;i++){ if(del[i].checked) str+=(str==""?"":",")+del[i].value; } if(str!="") return confirm('これらの情報を削除します。よろしいですか?('+str+')'); alert('チェックされてません'); return false; } </script> </head> <body> <form method="post" action="delete.php" onSubmit="return chk_del(this);"> <input type="checkbox" name="del[]" value="1">1番<br> <input type="checkbox" name="del[]" value="2">2番<br> <input type="checkbox" name="del[]" value="3">3番<br> <input type="checkbox" name="del[]" value="4">4番<br> <input type="checkbox" name="del[]" value="5">5番<br> <input type="checkbox" name="del[]" value="6">6番<br> <input type="checkbox" name="del[]" value="7">7番<br> <input type="submit" value="削除" name="delete"> </form> </body> </html>

nyalio
質問者

お礼

ご丁寧にありがとうございます! ご指示のとおりソースを書き直したところうまく行きました。 ただ、データが1件しかない時(<input type="checkbox" name="del[]" value="1">1番 だけのとき)だと、1番をチェックしてもelseに入るようです。 この辺は自分で調べてみますので、このたびはありがとうございました!

関連するQ&A