

formで送信ボタン押して、input要素３項目打ち込まなければエラー表示がでて、全項目打ち込んだら次のページにリンクするようにしたいのですが、３項目打ち込まずにsubmitした時ページの先頭に戻るのを避けたかったのでjqueryで記述したら表示はキープされるようになったのですが、エラー表示に対応したPHP側が反応しなくなりました。どうしても原因がわからなく解決方法を教えていただきたいです。

[code]

    <?php
    session_start();
    
    if (!empty($_POST)) {
      if ($_POST['name'] === '') {
        $error['name'] = 'blank';
      }
    
      if ($_POST['email'] === '') {
        $error['email'] = 'blank';
      }
    
      if ($_POST['message'] === '') {
        $error['message'] = 'blank';
      }
      
      if (empty($error)) {
        $_SESSION['join'] = $_POST;
        header('location: confirm.php');
        exit();
      }
    }
    
    $position = 0;
    if (isset($_REQUEST['position']) === true) {
      $position = $_REQUEST['position'];
    }
    ?>
    
          <form id="form" action="" method="POST">
            <div class="form-content mt-5">
              <div class="form-left ">
                <div class="form-group">
                  <input type="text" class="form-control" name="name" placeholder="名前"
                  value="<?php echo htmlspecialchars($_POST['name'], ENT_QUOTES)?>">
                  <?php if ($error['name'] === 'blank') :?>
                  <p class="text-danger">* 名前を入力してください</p>
                  <?php endif; ?>
                </div>
                <div class="form-group mt-5">
                  <input type="text" class="form-control" name="email" placeholder="メールアドレス"
                  value="<?php echo htmlspecialchars($_POST['email'], ENT_QUOTES)?>">
                <?php if ($error['email'] === 'blank') :?>
                  <p class="text-danger">* メールアドレスを入力して下さい</p>
                  <?php endif; ?>
                </div>
              </div>
              <div class="form-right">
                <div class="form-group">
                  <textarea class="form-control" name="message" placeholder="お問い合わせ"
                   rows="10"><?php echo htmlspecialchars($_POST['message'], ENT_QUOTES)?></textarea>
                <?php if ($error['message'] === 'blank') :?>
                  <p class="text-danger">* 本文を入力して下さい</p>
                  <?php endif; ?>
                </div>
              </div>
            </div>
            <input name="position" type="hidden" value="0">
            <input type="button" name="submit" value="上記の内容で送信する" class="text-center " id="button">
          </form>
    <script>
    $(document).ready(function() {
              window.onload = function () {
                  $(window).scrollTop(<?php echo $position; ?>);}
                  
                  $("input[type=button]").click(function() {
                    
                    var position = $(window).scrollTop();
                    $("input:hidden[name=position]").val(position);
      
                    ("#form").submit();
                  }); 
                });  
    </script>
    
[/code]


CC BY-SA 4.0
2020-09-28T09:11:24.283
70780
2020-09-28T09:11:24.283
40290
question
php jquery html5
form送信ボタン押しても現在の表示がキープできるようにしたい。