• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【PHPチェック】ラジオボタンが未入力である場合の)

【質問】PHPのラジオボタンが未入力でエラーメッセージが表示されない場合の対処法

このQ&Aのポイント
  • ラジオボタンのエラーメッセージの表示について調べています。解決策を見つけるために、特定のURLのベストアンサーを参照しましたが、問題が解決しませんでした。同意しないボタンを選択した場合にエラーメッセージを表示する方法を知りたいです。
  • 質問文では、ラジオボタンのエラーメッセージが表示されない問題についての質問をしています。特定のURLのベストアンサーのコードを試してみたがうまくいかず、同意しないボタンを選択した際にエラーメッセージを表示するための方法を知りたいです。
  • ラジオボタンのエラーメッセージの表示に問題があります。特定のURLのベストアンサーのコードをカスタマイズして試しましたが、うまくいきませんでした。同意しないボタンを選択した場合にエラーメッセージを表示する方法を教えてください。

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

  • ベストアンサー
回答No.1

<style> #waa1 { display:none; } #waa2 { display:inline; } #nya:checked ~ #waa1 { display:inline; } #nya:checked ~ #waa2 { display:none; } </style> <input type="checkbox" name="douisuru" value="hoge" id="nya" checked>同意する <br> <input type ="submit" name="submit"value ="送信する" id="waa1"> <div id="waa2">同意できない場合は本サービスをご利用いただけません</div> 回答と少し違いますが。 ↑のをどこかに挟んで実験してみてもらえれば、おそらくやりたいことは、これではないかと思います。 PHPプログラムなどなしでも、普通にそれ作れるので、 ↑みたいにしたほうが、手っ取り早くないですか? (通信をそもそもしてないので、高速ですから)

hayosat
質問者

お礼

ありがとうございました。詳しい説明感謝いたします。

その他の回答 (2)

  • asciiz
  • ベストアンサー率70% (6803/9674)
回答No.3

#回答No.1・No.2 とは別方向の解決法です(これも解決法の一例であって、他にもやり方はあります) まずはinput type="radio" タグの話ですが、これは name の同じもののうちどれかが選択できるようになる、というコントロールです。 なので、同意すると同意しないの選択にするには name を揃えて <input type="radio" name="doui" value="suru">同意する <input type="radio" name="doui" value="shinai">同意しない それぞれこんな感じに書いておきます。 ※あえて「同意する」のchecked は外しています。はじめから「同意する」が選択されていては、ユーザーは「送信する」を押すだけなので、あまり同意した意思を確認したことになっていないでしょう。 「同意する」を自分でクリックさせることが、意思確認ということになります。 また、PHPはサーバ側で動くものですので、ボタンを押したならばhttpリクエストが発生し、更新された画面でエラーメッセージを出す、などの方法になってしまいます。 その場でエラーを出すには、<button> タグでボタンを作ってJavascriptを呼び出し、その中でエラー出力、OKならフォーム送信、みたいに条件判断をしてみてはどうでしょう。 まずフォームにnameを付けるのと、ボタンを押した時に自動で送信されないようにonsubmitで送信無効にしておきます。 <form action ="hpform3.php" method ="post" name="doui_form" onsubmit="return false"> そして送信ボタンを単なる button タグで表示し、続いて押されたときの処理を書いています。 <td colspan="2"><button id="soushin">送信する</button></td> <script> var doui = document.getElementById('soushin'); doui.addEventListener('click', function() { if (document.doui_form.doui.value != "suru") { alert("利用規約に同意して頂けない場合は本サービスのご利用はお控えください。"); } else { document.doui_form.submit(); } }) </script> doui ラジオボタンが "suru" でなければ、alertでエラーウインドウを出します(そして画面は変わりません)。 そうでなければ、きちんと suru がチェックされているということなので、javascriptから form を submit() してやります。 参考にしたページ) >JavaScriptのsubmitイベントで、フォーム送信をコントロールしよう | 侍エンジニアブログ >https://www.sejuku.net/blog/28720 まあ全部PHPでやりたいなら、そういう方向もアリかとは思いますが…。

hayosat
質問者

お礼

ありがとうございます。

回答No.2

おまけ。 同意ボタンが「2個」欲しい場合。 さらに「両方にチェックが付いていなければ送信できないように」 のケースも書いておきますね。 <style> #waa1 { display:none; } #waa2 { display:inline; } #nya1:checked+#nya2:checked ~ #waa1 { display:inline; } #nya1:checked+#nya2:checked ~ #waa2 { display:none; } </style> <input type="checkbox" name="douisuru" value="hoge" id="nya1" checked>規約1に同意 <input type="checkbox" name="douisuru" value="hoge" id="nya2" checked>規約2に同意 <br> <input type ="submit" name="submit"value ="送信する" id="waa1"> <div id="waa2">同意できない場合は本サービスをご利用いただけません</div> "+"でチェックしているかの判定を つなげていけばいいだけなので、簡単かな。 ただし、これスタイルシートなので、HTMLの階層に 依存はしてます。 ただ、プログラムなしでも、送信前に簡単なチェックができるので、 今回の質問とは、少し離れてますが、 そういうやり方もあるだ~程度に覚えてもらえたらと 思います。

hayosat
質問者

お礼

ありがとうございます。助かりまた。

関連するQ&A