Member 13637584 Ответов: 1

Javascript запускается, но возвращается обратно после обновления страницы


У меня есть некоторый javascript, в котором я работаю, см. ниже. Когда я нажимаю кнопку, элемент удаляется, что мне и нужно. Затем страница обновляется, и она возвращается!

Кто-нибудь может мне помочь??

Что я уже пробовал:

язык JavaScript:
$(document).ready(function () {
        // When you click on a button = when a challenge is over
        $("input").click(function () {

            // 1. You hide him and mark him as finished
            var $challenge_div = $(this).parent().parent();
            $challenge_div.data("finish", "true");
            $challenge_div.removeClass("show").addClass("hide");

            // 2. You display a challenge that is hide and not finish

            // 2.1. Select all the hide div
            var $challenge_list = $("div[class='hide']");

            // 2.2. Check if the hide div is already finish or not
            $.each($challenge_list, function () {
                var new_challenge = $(this);


                // 2.3. If you find a challenge hide and not finish : display it and stop the loop
                if (new_challenge.data("finish") == false) {
                    new_challenge.removeClass("hide").addClass("show");
                    return true;
                }
            });

            // 3. If after this you have nothing to show = all challenge are finished : I display a message
            if ($("div[class='show']").length == 0) {
                $("#message p").html("You finished all your challenges !");
            }

        });
    });


РНР:

$cnt=0;
    while($dbRow=$dbQuery->fetch(PDO::FETCH_ASSOC)) {
    if($cnt < 3 ) 
    $class = "show"; 
    else 
    $class= 'hide';

                echo "<div id=".$dbRow["ID"]." data-finish='false' <div class=".$class."><h4>".$dbRow["Name"].
                <form method='POST'><input type='hidden' name='ID' value= '".$dbRow['']." '>
                <input type='submit' name=".$dbRow["ID"]." value='Complete' >id=".$dbRow["ID"].
                "</form></div>";
          $cnt++;

1 Ответов

Рейтинг:
1

Super Superman

Удалите часть кнопки type='submit' - это вызовет обратную передачу страницы (вы отправляете форму) и возврат страницы к тому состоянию, в котором она была при запуске.

Вы могли бы попробовать изменить его на а вместо этого, как это:

<button type="button" name=".$dbRow["ID"]." value='Complete' />


Member 13637584

Я пробовал это, и это все еще не работает? @SuperSuperman

Super Superman

Сохраняете ли вы изменения в своей базе данных, когда они возвращаются обратно из формы?

Member 13637584

Нет, он не был сохранен в базе данных?

Super Superman

Разве вы не загружаете его из своей базы данных (или другого источника), используя следующее: while($dbRow=$dbQuery->fetch(PDO::FETCH_ASSOC)) ?

Member 13637584

да, это отображение элементов, но javascript-это то, что мне нужно, чтобы остаться? Javascript-это то, что избавляется от него и скрывает/показывает его

Super Superman

Однако javascript только удаляет его с экрана. Когда вы нажимаете кнопку, ваша форма отправляется обратно на сервер, а затем PHP загружает данные из вашего источника данных и снова визуализирует форму.

Вам необходимо обновить свой источник данных перед перезагрузкой данных. Из того, что вы опубликовали, похоже, что эта часть процесса отсутствует?