Повторно открыть переключатель после отправки формы

Я все еще работаю над своим школьным проектом, который почти закончен. С вашей помощью я успешно создал работающую систему, которая позволяет пользователям записывать, редактировать и удалять данные в/из базы данных. Единственная проблема у меня сейчас с "удобной формой". Мне удалось создать автофокус, вставить правильные значения при редактировании, чтобы пользователь мог видеть, что было ранее написано в этом поле, и т. д. Мои формы скрыты с помощью jquery. Когда пользователь нажимает кнопку «Добавить», форма проскальзывает. Мне нужно добиться следующего: «когда пользователь нажимает «Отправить», страница обновляется и добавляет элемент в базу данных, форма должна снова появиться, чтобы пользователи могли быстрее добавлять данные».

Вот мой код.

  $(document).ready(function() {
    $('#x').click(function() {
      $('.y').toggle("slide");
    });
  });
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id = "x">Click</div>
<div class = "y" style = "display: none;">
  <div class = "container">
    <form action = "insertzunanja.php" method = "POST" id = "x">
      <input type = "hidden" name = "narocilo" value = "0.1412312">
      <input type = "hidden" name = "id" value = "id-1">
      <input type = "text" name = "dolzina" style = "width:49%;" placeholder = "Dolzina (v cm)">
      <input type = "text" name = "sirina" style = "width:49%;" placeholder = "Sirina (v cm)">
      <input type = "text" name = "kolicina" value = "1" style = "width:49%;" placeholder = "Kolicina">
      <input type = "text" name = "opombe" style = "width:49%;" placeholder = "Opombe">
      <input type = "submit" value = "Send">
    </form>
  </div>
</div>

Спасибо и всего наилучшего.

Когда пользователь переключает form в первый раз, вы можете добавить параметр к URL-адресу. Таким образом, после обновления (зачем вам вообще нужен refresh?) URL-адрес остается прежним, и вы будете знать, что форма должна быть видна.

Mosh Feu 02.04.2019 10:36

Мне нужно обновление, чтобы таблица могла обновляться, а входные данные были видны @MoshFeu

Dadinho28 02.04.2019 10:37

Входы будут видны, потому что их никто не скрывает. Вы можете обновить таблицу, выбрав данные таблицы (с помощью ajax) и снова сгенерировав таблицу.

Mosh Feu 02.04.2019 10:38

Вы знакомы с аякс?

Mosh Feu 02.04.2019 10:39

@MoshFeu К сожалению, нет, как видите, я новичок :(

Dadinho28 02.04.2019 10:41

Поэтому я и дал ссылку, чтобы вы могли прочитать об этом :) Это стандарт вызова сервера для действий после того, как страница уже загружена. В любом случае, вы можете следовать моей первой рекомендации (не обращайте внимания на скобки)

Mosh Feu 02.04.2019 10:43
Стоит ли изучать 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 и хотите разрабатывать...
0
6
185
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Вы можете использовать вызов AJAX для отправки данных в файл php вместо действия формы. Согласно вашему коду у вас будет что-то вроде этого:

<div id = "x">Dodaj</div>
 <div class = "y" style = "display: none;"> 
<div class = "container">
<input type = "hidden" name = "narocilo" value = "<?php echo $randomNum; ?>">
<input type = "hidden" name = "id" value = "<?php echo $id; ?>">
    <input type = "text" name = "dolzina" style = "width:49%;" placeholder = "Dolzina (v cm)">
    <input type = "text" name = "sirina" style = "width:49%;" placeholder = "sirina (v cm)">
    <input type = "text" name = "kolicina" value = "1" style = "width:49%;" placeholder = "Kolicina">
    <input type = "text" name = "opombe" style = "width:49%;" placeholder = "Opombe">
    <input id = "sub" type = "submit" value = "Send">
</div>
</div>


$(document).ready(function(){
    $('#x').click(function() {
      $('.y').toggle("slide");
    });
});

$("sub").click(function(){
    $.post("insertzunanja.php",
    {
      dolzina: $("input[name=dolzina]"),
      sirin: $("input[name=sirina]")
    },
    function(){
       $("input[name=dolzina]").val("");
       $("input[name=sirina]").val("");
      if ($('.y').is( ":hidden" )) {
        $('.y').toggle("slide");
      }
    });
  });

По сути, когда вы нажимаете кнопку, вы вызываете php с запросом AJAX POST, передавая два значения dolzina и sirin, полученные с помощью html-кода (примечание: у вас есть больше значений для передачи, поэтому измените его соответствующим образом) в файл php. Jquery удаляет значения полей ввода и проверяет, отображаются ли поля ввода. В противном случае отображаются поля ввода.

Если вы используете PHP для обработки отправки формы и генерации кода в своем вопросе, и вы всегда хотите, чтобы форма отображалась после отправки, вы можете сделать это:

  1. В коде PHP идентифицируйте отправку (например, isset($_REQUEST['id'])).
  2. [если верно №1] При создании кода jQuery добавьте $('.y').show(); в готовую функцию (но отдельно от существующей функции щелчка).

Пример:

<?php
// your existing code...
?>
$(document).ready(function() {
    <?= ( isset($_REQUEST['id']) ? '$(".y").show();' : '' ); ?>

    $('#x').click(function() {
      $('.y').toggle("slide");
    });
  });
<?php
// your existing code...
?>

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