Перейти к форме после отправки

Это может показаться простой проблемой, но я застрял на этом. Надеюсь, кто-нибудь может помочь мне в этом

Я работаю над проверкой формы на стороне сервера в PHP. Все работает так, как ожидалось, что касается проверки. Но если при вводе отображается ошибка или форма отправляется, браузер переходит к началу страницы. Как я могу предотвратить такое поведение? Мне нужна страница, где она находится после того, как я нажму кнопку отправки

<?php include('process_form.php'); ?>
<form method = "POST" action = "<?php $_SERVER['PHP_SELF']; ?>">
    <div class = "form-row">
        <div class = "col form-group">
            <label>Primeiro nome</label>
            <input type = "text" class = "form-control" title = "Inserir nome"  name = "firstname" value = "<?php echo $firstname ?>">
            <span class = "error"><?php echo $firstnameErr ?></span>

я думаю, потому что, когда отправляется запрос «отправить», он обновляет страницу, вы пробовали использовать теги <a> вместо <button>?

Sam.92 03.04.2019 13:42

Что вы имеете в виду под "где это"? Почему бы не использовать идентификатор в своей форме и добавить # и этот идентификатор в тег формы?

Nico Haase 03.04.2019 13:42

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

04FS 03.04.2019 13:43

Привет ребята. Я забыл упомянуть, что моя форма находится внизу страницы. Так что независимо от результата, я хочу оставаться в этой форме.

SergioNeves 03.04.2019 13:50

как мы можем обработать проверку без отправки запроса на сервер? либо требуется перезагрузка, либо проверка может выполняться через ajax

Danyal Sandeelo 03.04.2019 13:52
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
5
364
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если я понимаю ваш вопрос, вы просите довольно много только от HTML и PHP. Помните, что после отправки формы браузер уходит с текущей страницы и загружает страницу действия формы (в вашем случае он перезагружает текущую страницу в соответствии с директивой action = "<?php $_SERVER['PHP_SELF']; ?>".

Итак, как бы вы разместили страницу именно в нужном месте, если бы не происходило отправки формы? Вот как бы вы поступили в этом случае. Итак, как было предложено в комментариях, вы можете изменить директиву действия: action = "<?php $_SERVER['PHP_SELF']; ?>#id_of_form_container". Например, если ваша форма имеет такую ​​структуру div:

<div id = "contact_form_div">
    <form method = "POST" action = "<?php $_SERVER['PHP_SELF']; ?>">

тогда ваш тег действия будет:

action = "<?php $_SERVER['PHP_SELF']; ?>#contact_form_div"

В качестве альтернативы вы можете выполнить базовое тестирование валидности формы на стороне javascript во время процесса отправки формы. Если, например, обязательное поле пусто, вы можете return false;, что остановит процесс отправки и вернет управление пользователю.

Вот пример того, как выглядит базовая проверка поля JavaScript. И вот пример использования javascript/jQuery для прерывания процесса отправки формы для выполнения этой проверки и возврата управления пользователю (через return false;), если проверка не удалась.

Использованная литература:

Статья MDN о проверке формы — обратите внимание на ссылки SmashingMagazine внизу

TutorialsPoint - более краткий пример того же

Видеоурок того же (30 мин)

Большое спасибо, это именно то, что я искал

SergioNeves 03.04.2019 17:49

Другие вопросы по теме