【前提・やりたいこと】
下図のように、カタログを請求する問い合わせフォームを作っています。
jQueryで、チェックが入った際にテキストボックスをONにし、PHPで入力判定を行っています。
PHPで入力判定の際、チェックボックスと連動しているテキストボックスが未入力だった場合にエラーメッセージを出したいのですが、どのようにすればいいのでしょうか?ご教授ください。
HTML
1<!-- 問い合わせ入力フォーム --> 2<div class="cArea_1"> 3 <p class="part_1"> 4 <label class="checkbox_text"> 5 <!--<input id="fI_11" class="checkbox_input_1" type="checkbox" name="checked[]" value="カタログ一式(総合カタログ+製品カタログ全種)">--> 6 <input id="fc_1" class="checkbox_input_1" type="checkbox" name="checked[]" value="カタログ一式(総合カタログ+製品カタログ全種)"> 7 <span class="checkbox_parts_1">カタログ一式(総合カタログ+製品カタログ全種)</span> 8 </label> 9 </p> 10 <p class="part_1"> 11 <label class="checkbox_text"> 12 <!--<input id="fI_11" class="checkbox_input_1" type="checkbox" name="checked[]" value="総合カタログ">--> 13 <input id="fc_2" class="checkbox_input_1" type="checkbox" name="checked[]" value="総合カタログ"> 14 <span class="checkbox_parts_1">総合カタログ</span> 15 </label> 16 </p> 17 <p class="part_1"> 18 <label class="checkbox_text"> 19 <!--<input id="fI_11" class="checkbox_input_1" type="checkbox" name="checked[]" value="製品1">--> 20 <input id="fc_3" class="checkbox_input_1" type="checkbox" name="checked[]" value="製品1"> 21 <span class="checkbox_parts_1">製品1</span> 22 </label> 23 </p> 24 <p class="part_1"> 25 <label class="checkbox_text"> 26 <!--<input id="fI_11" class="checkbox_input_1" type="checkbox" name="checked[]" value="製品2">--> 27 <input id="fc_4" class="checkbox_input_1" type="checkbox" name="checked[]" value="製品2"> 28 <span class="checkbox_parts_1">製品2</span> 29 </label> 30 </p> 31</div> 32 33<div class="cArea_2"> 34 <p class="part_2"> 35 <!--<input id="fI_09" name="number[]" value="" maxlength="3" type="text" disabled="disabled">--> 36 <input id="fn_1" name="number[]" value="" maxlength="3" type="text" disabled="disabled"> 部 37 </p> 38 <p class="part_2"> 39 <!--<input id="fI_09" name="number[]" value="" maxlength="3" type="text" disabled="disabled">--> 40 <input id="fn_2" name="number[]" value="" maxlength="3" type="text" disabled="disabled"> 部 41 </p> 42 <p class="part_2"> 43 <!--<input id="fI_09" name="number[]" value="" maxlength="3" type="text" disabled="disabled">--> 44 <input id="fn_3" name="number[]" value="" maxlength="3" type="text" disabled="disabled"> 部 45 </p> 46 <p class="part_2"> 47 <!--<input id="fI_09" name="number[]" value="" maxlength="3" type="text" disabled="disabled">--> 48 <input id="fn_4" name="number[]" value="" maxlength="3" type="text" disabled="disabled"> 部 49 </p> 50</div>
PHP
1// エラー表示設定 2$temp_err = [ 3 '__Error_Input_Data__' => '必須項目が未入力です。' 4, '__Error_Marge_Data__' => '入力された内容に不足があります' 5, '__Error_Mail_Address__' => 'メールアドレスが正しくありません' 6, '__Error_Mail_Check__' => 'メールアドレスが一致しません' 7, '__Error_CheckBox_Check__' => 'ご希望のカタログを1つ以上選択してください。' 8, '__Error_Number_Check__' => 'ご希望のカタログ部数を入力してください。' 9, '__Error_Text_Max__' => '文字数が多すぎます(__Text_Max__字まで)' 10]; 11 12unset($_SESSION['SFM']); 13$error = $email = ''; 14foreach ($_POST as $key => $value) { 15 $name = preg_replace('/(.+)_s$/', "$1", $key); 16 if ($value == 'none') { 17 $value = ''; 18 } 19 if (is_array($value)) { 20 $value = $this->valueMarge($key, $value, $cfg['name_marge']); 21 if ($value == '__Error_Marge_Data__') { 22 $error = 1; 23 } 24 } 25 $value = mb_convert_kana($value, 'KV', $cfg['internal_enc']); 26 if (preg_match('/_s$/', $key) && $value == '') { 27 $_SESSION['SFM'][$name] = '__Error_Input_Data__'; 28 $error = 1; 29 } elseif ($name == 'email' && $value) { 30 if (!preg_match("/^[\w\-.]+\@[\w\-.]+.([a-z]+)$/", $value)) { 31 $_SESSION['SFM']['email'] = '__Error_Mail_Address__'; 32 $error = $email = 1; 33 } else { 34 $_SESSION['SFM']['email'] = $email = $value; 35 } 36 } elseif ($name == 'emailcheck') { 37 if ($email != 1 && $email != $value) { 38 $_SESSION['SFM']['email'] = '__Error_Mail_Check__'; 39 $error = 1; 40 } 41 } elseif ($name == 'checked') { 42 if (($_POST[$name]) === "") { 43 $_SESSION['SFM'][$name] = '__Error_CheckBox_Check__'; 44 $error = 1; 45 } else { 46 if (isset($_POST[$name]) && is_array($_POST[$name])) { 47 $_SESSION['SFM'][$name] = $value; 48 } 49 } 50 } elseif ($cfg['maxText'] && strlen($value) > $cfg['maxText']) { 51 $_SESSION['SFM'][$name] = '__Error_Text_Max__'; 52 $error = 1; 53 } else { 54 $_SESSION['SFM'][$name] = $value; 55 } 56 }
HTML
1<!-- 確認画面 --> 2<table> 3 <tr> 4 <th class="fItem_01">ご希望カタログ<span class="req">必須</span></th><!-- .fItem_01 --> 5 <td class="fItem_02"> 6 <div class="inner_3"> 7 <div class="cArea_1"> 8 <?php echo $sfm_html->checked; ?> 9 </div> 10 <div class="cArea_2"> 11 <?php echo $sfm_html->number."部";?> 12 </div> 13 </div> 14 </td> 15 </tr> 16</table>
回答1件
あなたの回答
tips
プレビュー