個人情報の取り扱いに関する同意ボタンをチェックした後、JavaScriptで送信ボタンを有効化させる方法をご紹介します。
DEMOは、こちら “個人情報利用目的について”を参照ください。
HTMLの設定
データベースは、択一のセレクト(ラジオボタン)フィールドを選択します。
そしてフィールドのラベルは、今回、「同意します」のみ設定しています。
上のキャプチャの通り、IDはvalue値などを紐付ける役割があります。
では、デフォルトのHTMLは、どのように構成されているのか見ていきましょう!
<dl class="cf"> <dt class="title"> 同意確認ボタン </dt> <dd class="data multi2"> <ul class="radio cf"> <li><label><input class="input" type="radio" name="●●●" value="1" $●●●:r1$><span>同意します</span></label></li> </ul> <input type="hidden" value="" name="●●●"> <span class="msg">$error:●●●$</span> </dd> </dl>
※●●●には、データベース構築の際、フィールド名ごとに設定した差替キーワードが入ります。
「$●●●:r1」とは、「ラジオボタン」で設定された、セレクトフィールドの「IDナンバー1」のことで、これは自動でhtmlに記載されます。
話が少し、それましたが、、
他の質問やフォームと同じように、dlで構成されていることがわかりました!
それでは、”個人情報利用目的について”の内容をdivで構成させていきましょう。
また、div内の下部には、同意ボタン=input要素など追記します。
<div class="privacy"> <p class="privacy_ttl">個人情報の利用目的について</p> <div class="privacy_inner"> <p>パイプド不動産(以下、「当社」という)は、個人情報を以下の目的に利用いたします。</p> <ol> <li>当社の不動産販売・仲介事業に関し、郵便による資料送付、電子メールによる情報提供、電話等による商品案内等の営業活動を行なうため。</li> <li>顧客動向分析もしくは商品開発等の調査分析のため。</li> </ol> <hr style=”width:500px”> <p>※詳細は当社、個人情報のお取り扱いについて<br> <a href="https://www.pi-pe.co.jp/company/management/privacy/" target="_blank">https://www.pi-pe.co.jp/company/management/privacy/</a>をご参照ください。</p> <p>消費者相談・苦情受付窓口</p> <table> <tr> <th>受付時間</th> <td>平日10:00~18:00(12/28~1/3を除く)</td> </tr> <tr> <th>TEL</th> <td>**-****-****</td> </tr> </table> <p>以上</p> </div> <p class="privacy_agreement"> <label for="checkAgree" class="checkAgree"> <input type="checkbox" name="●●●" id="checkAgree" value="1" $●●●:r1$ > <span style="margin-left:10px">同意します</span> </label> </p> <input type="hidden" value="" name="●●●"> <span class="msg" style="text-align: center;">$error:●●●$</span> <input type="hidden" name="detect" value="判定"> </div><!-- .privacyここまで --> <!-- HIDDEN_PARAM START --> $form:hidden$ <!-- HIDDEN_PARAM END --> <input class="submit" id="checkSubmit" type="submit" name="submit" value="確認する">
div class=”privacy”で囲まれた部分は、後ほどCSSでスクロール設定をします。
onClickイベントの設定
HTMLの下準備を終えたら、ocClickのイベントをinputタグに記述します。
onClick=”関数名();”
<p class="privacy_agreement"> <label for="checkAgree" class="checkAgree"> <input type="checkbox" name="●●●" id="checkAgree" value="1" $●●●:r1$ onclick="changeDisabled();"> <span style="margin-left:10px">同意します</span> </label> </p>
CSSの設定
divなどで囲まれたテキストをスクロールさせるには、overflowのスタイル設定を行います。
/*pc*/ .privacy { width: 600px; margin: 0 auto; text-align: left; } .privacy_inner { height: 200px; overflow: auto; padding: 10px; background: #ddd; margin-bottom: 20px; } .privacy_ttl{ margin-top: 20px; font-size: 14px; } .privacy_agreement{ text-align: center; } #SMP_STYLE label.checkAgree{ padding: 8px 20px; border: solid 2px #c3fa71; font-size: 1.5em } /*タブレット*/ .privacy { width: 100%; margin: 0 auto; text-align: left; } .privacy_inner { height: 200px; overflow: auto; padding: 10px; background: #ddd; margin-bottom: 20px; } .privacy_ttl{ margin-top: 20px; font-size: 14px; } .privacy_agreement{ text-align: center; } #SMP_STYLE label.checkAgree{ padding: 8px 20px; border: solid 2px #c3fa71; font-size: 1.5em } /*スマートフォン*/ .privacy { width: 100%; margin: 0 auto; text-align: left; } .privacy_inner { height: 200px; overflow: auto; overflow-x: hidden; padding: 10px; background: #ddd; margin-bottom: 20px; } .privacy_ttl{ margin-top: 20px; font-size: 14px; } .privacy_agreement{ text-align: center; } #SMP_STYLE label.checkAgree{ padding: 8px 20px; border: solid 2px #c3fa71; font-size: 1.5em }
JavaScriptの設定
そして最後に、JavaScriptの設定を行いましょう!
//チェックボックスをチェックすると「確認する」ボタンがアクティブになる function changeDisabled(){ checkbox = document.getElementsByName('●●●') if(checkAgree.checked) { document.getElementById('checkSubmit').disabled = ""; document.getElementById('checkSubmit').style.background = "#15700c"; } else { document.getElementById('checkSubmit').style.background = "#c1c1c1"; document.getElementById('checkSubmit').disabled = "disabled"; } } window.onload = changeDisabled;
window.onloadを複数設定する場合、window.onloadはまとめて最後尾に記述してください。
まとめずfunctionごとに記述したら、JavaScriptの処理が行われませんので気をつけてくださいね!
フォームカスタマイズ 関連リンク
Vol.1 姓名の記述を分けて横並びにするVol.2 “その他”の項目に入力欄を追加する
Vol.3 マトリクス形式の回答欄を作成する
Vol.4 星型のレーティング形式の回答欄を作成する
Vol.5 JavaScriptで項目の表示非表示を切り替える
Vol.6 タップで回答できるバー形式の回答欄を作成する
★ Vol.7 同意ボタンのチェックで送信ボタンを有効化させる