お世話になります。
PHPで投稿フォームを作っております。
その中の機能で、ある一部の範囲をチェックボックスへのチェックで開閉できる機能を付けています。
しかし、デフォルト閉じていたものを開いた場合など(またはその逆)、チェックボックスの操作で開いたもの(またはその逆)は、POSTで送信したとき、その状態を維持することが出来ません。開いた状態で送信するとデフォルトの状態(閉じた状態)となります。
php
<?php if(isset($_POST["opinion"])){ $checked = "checked"; } ?>
<form action="./" method="post" id="mainForm" name="mainForm"> <input type="checkbox" id="checkCmt" name="opinion" <?php echo $checked; ?>>意見を書く <br /> <p id="uComment"><input type="text" name="Comment" value="<?php echo $Comment; ?>"></p> <input type="submit" value="submit"> </form>
js
window.onload = function(){ document.getElementById("checkCmt").onclick = function(){ if (this.checked) { document.getElementById("uComment").style.display = "block"; }else{ document.getElementById("uComment").style.display = ""; } } }
javascriptの知識が無いに等しい中で、javascriptという性質上、「チェックボックスにチャックが入ったときにイベントが発生するのだからPOSTしたものを引き継ぐことが出来ない?」などと思いながら、調べていますがここ数日立ち止まったままでで動けずにおります。
お忙しい中恐縮ですがアドバイスのほど頂戴できれば幸いです。
よろしくお願いいたします。
■現在のコード
<?php if(isset($_POST["submit"]) AND isset($_POST["opinion"])){ $checked = "checked"; } ?> <!doctype html> <html lang="ja"> <head> <meta charset="utf-8"> <title></title> <script> <!-- window.onload = function(){ document.getElementById("checkCmt").onclick = function(){ if (this.checked) { document.getElementById("uComment").style.display = "block"; }else{ document.getElementById("uComment").style.display = ""; } } } let check = function(){ let chbx = document.getElementById("checkCmt"); if (chbx.checked) { document.getElementById("uComment").style.display = "block"; }else{ document.getElementById("uComment").style.display = "none"; } } window.onload = check; document.getElementById("checkCmt").onclick = check; --> </script> <style> <!-- #uComment { display:none; } --> </style> </head> <body> <form action="./test4.php" method="post" id="mainForm" name="mainForm"> <input type="checkbox" id="checkCmt" name="opinion" <?php echo $checked; ?>>意見を書く <br /> <p id="uComment"><input type="text" name="Comment" value="<?php echo $Comment; ?>"></p> <input type="submit" name="submit" value="submit"> </form> </body> </html>