formで送信ボタン押して、input要素3項目打ち込まなければエラー表示がでて、全項目打ち込んだら次のページにリンクするようにしたいのですが、3項目打ち込まずにsubmitした時ページの先頭に戻るのを避けたかったのでjqueryで記述したら表示はキープされるようになったのですが、エラー表示に対応したPHP側が反応しなくなりました。どうしても原因がわからなく解決方法を教えていただきたいです。
PHP
1<?php 2if (!empty($_POST)) { 3 if ($_POST['name'] === '') { 4 $error['name'] = 'blank'; 5 } 6 7 if ($_POST['email'] === '') { 8 $error['email'] = 'blank'; 9 } 10 11 if ($_POST['message'] === '') { 12 $error['message'] = 'blank'; 13 } 14 15 if (empty($error)) { 16 header('location: confirm.php'); 17 exit(); 18 } 19} 20 21$position = 0; 22if (isset($_REQUEST['position']) === true) { 23 $position = $_REQUEST['position']; 24} 25?>
HTMLjQuery
1 <form id="form" action="" method="POST"> 2 <div class="form-content mt-5"> 3 <div class="form-left "> 4 <div class="form-group"> 5 <input type="text" class="form-control" name="name" placeholder="名前" 6 value="<?php echo htmlspecialchars($_POST['name'], ENT_QUOTES)?>"> 7 <?php if ($error['name'] === 'blank') :?> 8 <p class="text-danger">* 名前を入力してください</p> 9 <?php endif; ?> 10 </div> 11 <div class="form-group mt-5"> 12 <input type="text" class="form-control" name="email" placeholder="メールアドレス" 13 value="<?php echo htmlspecialchars($_POST['email'], ENT_QUOTES)?>"> 14 <?php if ($error['email'] === 'blank') :?> 15 <p class="text-danger">* メールアドレスを入力して下さい</p> 16 <?php endif; ?> 17 </div> 18 </div> 19 <div class="form-right"> 20 <div class="form-group"> 21 <textarea class="form-control" name="message" placeholder="お問い合わせ" 22 rows="10"><?php echo htmlspecialchars($_POST['message'], ENT_QUOTES)?></textarea> 23 <?php if ($error['message'] === 'blank') :?> 24 <p class="text-danger">* 本文を入力して下さい</p> 25 <?php endif; ?> 26 </div> 27 </div> 28 </div> 29 <input name="position" type="hidden" value="0"> 30 <input type="submit" name="submit" value="上記の内容で送信する" class="text-center " id="button"> 31 </form> 32 </div> 33 </div> 34</div> 35 36<script> 37$(document).ready(function() { 38 window.onload = function () { 39 $(window).scrollTop(<?php echo $position; ?>);} 40 41 $("input[type=button]").click(function() { 42 43 var position = $(window).scrollTop(); 44 $("input:hidden[name=position]").val(position); 45 46 ("#form").submit(); 47 }); 48 }); 49</script>
あなたの回答
tips
プレビュー