Это может показаться простой проблемой, но я застрял на этом. Надеюсь, кто-нибудь может помочь мне в этом
Я работаю над проверкой формы на стороне сервера в 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>
Что вы имеете в виду под "где это"? Почему бы не использовать идентификатор в своей форме и добавить # и этот идентификатор в тег формы?
Если вам просто нужно вернуться к началу формы, используйте якорь в действии формы. Если вам нужно, чтобы он переместился в определенную позицию, вам нужно либо использовать JavaScript (измерить смещение прокрутки перед отправкой, сохранить где-то, восстановить после), либо динамически поместить идентификатор цели привязки действия куда-нибудь.
Привет ребята. Я забыл упомянуть, что моя форма находится внизу страницы. Так что независимо от результата, я хочу оставаться в этой форме.
как мы можем обработать проверку без отправки запроса на сервер? либо требуется перезагрузка, либо проверка может выполняться через ajax






Если я понимаю ваш вопрос, вы просите довольно много только от 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 - более краткий пример того же
Большое спасибо, это именно то, что я искал
я думаю, потому что, когда отправляется запрос «отправить», он обновляет страницу, вы пробовали использовать теги
<a>вместо<button>?