簡體   English   中英

php驗證失敗后跳轉到特定的id

[英]jump to specific id after php validation fails

有人可以告訴我如何讓頁面跳轉(或滾動)到特定的id,在php驗證失敗后出現錯誤消息嗎?

我有一個php頁面,用戶必須滾動到底部很長。 頁面中間有聯系表,用戶可以在其中輸入電子郵件地址和評論。 用戶按下“發送”按鈕后,php驗證生效。 但是,按下“發送”按鈕后,它跳到頁面的頂部。 之后,我自己向下滾動,可以看到聯系表下方顯示的錯誤消息。 但這並不是大家都同意的樣子...

然后,我嘗試使用javascript scrollTop,如下所示。 ScrollTop可以工作,盡管沒有錯誤消息出現。

我知道我在想什么,但是我不知道在想什么。

請你幫助我好嗎 ?

index.php和top.js如下所示;

的index.php

<?php

session_start();
if(isset($_POST['sendemail'])){

  $_SESSION['email'] = $_POST['email'];
  $_SESSION['message'] = $_POST['message'];

  if (!$_SESSION['email'] || !filter_var($_SESSION['email'],    FILTER_VALIDATE_EMAIL)) {
    $errEmail = 'please type correct email address';
  }

  if (!$_SESSION['message']) {
    $errMessage = 'please type message';
  }

  if (!$errEmail && !$errMessage) {
    header('Location: messagesent.php');
    exit;
  }
}
?>

<html>
  <head>..</head>
  <body>
    ...

   <section id="contact">
    ...
      <div>
        <input name="email" type="text">
        <label>Email</label>
        <?php echo "<p style='color:red;'>$errEmail</p>";?>
      </div>
      <div>
        <textarea name="message"></textarea>
        <label>Message</label>
        <?php echo "<p style='color:red;'>$errMessage</p>";?>
      </div>
      <div class="right-align">
        <button id="contactbutton" type="submit" name="sendemail">Send</button>
      </div>
   ...
  </section>
  ...
  <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
  <script type="text/javascript" src="js/top.js"></script>
  </body>
</html>

top.js

$(function(){
  $('#contactbutton').click(function(){
    $('html,body').animate({
      scrollTop: $('#contact').offset().top
    }, 1000);
    return false;
  });
});

也許您可以為您的消息框創建一個ID:

<?php echo "<p id=\"errMessage\" style='color:red;'>$errMessage</p>";?>

然后在驗證中,您可以執行以下操作:

if (isset($errMessage) && !empty($errMessage)) {
    header("Location: index.php#errMessage");
  }

這會將光標聚焦在錯誤消息上。 您也可以使用相同的技術將焦點更改為所需的文本區域和其他字段。

假設您有一個包含輸入內容的表單元素,則可以使用片段標識符將表單操作設置為當前頁面:

<form action="#errors"> ... </form>

然后,您可以為錯誤容器分配一個ID:

<div id="errors">Error list</div>

或在錯誤容器之前放置一個空的錨點:

<a name="errors"></a>
<div>Error list</div>

名稱和ID值在文檔中必須唯一。 無需顯式重定向。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM