Переход на часть веб-страницы после обновления страницы

#php #jquery #forms #validation #anchor

#php #jquery #формы #проверка #привязка

Вопрос:

У меня есть список комментариев к данной статье, и у меня есть форма под комментариями, чтобы пользователь мог добавлять свои собственные комментарии.

Я использую php для выполнения некоторой проверки формы.

Это процесс:

  1. Пользователь заполняет форму (или нет) и нажимает кнопку отправки. страница обновляется.
  2. PHP проверяет вводимые пользователем данные и либо отправляет комментарии, если ошибок нет, либо генерирует список ошибок.
  3. Если ошибки существуют, отобразите ошибки.

    Проблема в том, что я хочу, чтобы ошибки отображались под комментариями перед формой, которую он создает, но когда страница обновляется, отображается верхняя часть страницы, и мне нужно, чтобы она сразу переходила к ошибкам и форме (очень похоже на привязку страницы)

Возможно ли это?

Это вызывается после нажатия кнопки отправки

 if(empty($errors)){
        $result = post_comment('event',$event_id, $sendername, $senderemail, $userurl, $comment);
        if ($result == 'Correct') {
            //header('Location: /'.$_SERVER['REQUEST_URI']);
            header('Location: '.$_SERVER['REQUEST_URI']);
        }
        else {
            $send_error = $result;
  

и это рядом с комментариями и формой, куда я хочу перейти на страницу, если существуют ошибки

 // If there was an error sending the email, display the error message
if (isset($send_error)) {
echo "<a name="commentsform"></a>";
echo "There was an error: ".$send_error;
}
/**
* If there are errors and the number of errors is greater than zero,
* display a warning message to the user with a list of errors
*/
if ( isset($errors) amp;amp; count($errors) > 0 ) {
    echo ( "<h2 class='errorhead'>There has been an error:</h2><p><span class='bold'>You forgot to enter the following field(s)</span></p>" );
    echo ( "<ul id='validation'>n" );
    foreach ( $errors as $error ) {
        echo ( "<li>".$error."</li>n" );
    }
echo ( "</ul>n" );
}
        }
    }
  

Комментарии:

1. Используйте встроенную возможность браузера для перехода к идентификатору, если хэш URL совпадает: example.com#id перейдет на example.com и переход к элементу с идентификатором id

Ответ №1:

Дайте форме идентификатор, к которому можно перейти по URL:

 <div id="submitComment">
  <!-- Comment form here -->
</div>
  

А затем перенаправляет пользователя обратно на тот же URL-адрес с соответствующим хэш-тегом:

 header('Location: http://www.example.com#submitComment');
  

Комментарии:

1. Он должен: w3.org/TR/html401/struct/links.html#h-12.2.3 . Действительно ли это происходит или нет, это другой вопрос.

Ответ №2:

Найдите свой тег формы, он будет выглядеть примерно так

 <form action='yourpage.php'>
  

Поместите хэш-тег после URL-адреса вместе с привязкой, на которую он перейдет при отправке-

 <form action='yourpage.php#commentsform'>
  

Ответ №3:

Используя привязки страницы, вы можете перенаправить пользователя на любую часть страницы, изменив хэш в URL.

Сделайте так, чтобы форма отправляла пользователя на привязку следующим образом:

 <form action='yourpage.php#comments'>
  

И создайте привязку, в которой вы хотите, чтобы ваш пользователь оказался:

 <a name="comments"></a>