html Выберите не сохранять данные после вызова функции history.back () - PullRequest
0 голосов
/ 03 июля 2018

Я создаю форму, используя phpmailer, которая состоит из 3 этапов: сама форма, страница подтверждения информации и страница отправленного сообщения. Когда пользователь находится на странице подтверждения информации, он может вернуться и исправить записанную информацию, используя bus onclick = "history.back ();". Все работает нормально, все поля остаются написанными, как пользователь, за исключением кнопки выбора в течение многих лет, которая использует следующий код:

<select id="f_year" name="f_year" data-validation-engine="validate[required]" class="validate[required]"></select>

<script>
var start = 1900;
    var end = new Date().getFullYear();
    var options = "<option disabled selected value>年</option>";
    for(var year = start ; year <=end; year++){
        options += "<option>"+ year + "年" + "</option>";
    }
    document.getElementById("f_year").innerHTML = options;
</script>

При нажатии для исправления информации данные из этого элемента выбора вообще не сохраняются. Что мне делать?

1 Ответ

0 голосов
/ 03 июля 2018

Проверьте следующее. Это минимальный, полный и проверяемый пример вашего проблемного сценария.

Как видите, есть два SELECT элемента, один из которых жестко запрограммирован, а другой динамически генерируется (тот же сценарий, который вы предоставили).

<html>
    <body>
        <select>
            <option value="Val1">V1</option>
            <option value="Val2">V2</option>
            <option value="Val3">V3</option>
            <option value="Val4">V4</option>
            <option value="Val5">V5</option>
        </select>
        <select id="f_year" name="f_year" data-validation-engine="validate[required]" class="validate[required]"></select>
        <script>
            var start = 1900;
            var end = new Date().getFullYear();
            var options = "<option disabled selected value>年</option>";
            for(var year = start ; year <=end; year++){
                options += "<option>"+ year + "年" + "</option>";
            }
            document.getElementById("f_year").innerHTML = options;
        </script>
        <button onclick="window.location='confirm.php'">Proceed</button>
    </body>     
</html>

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

Что происходит, когда вы возвращаетесь назад, сценарии на странице будут выполняться с самого начала, изменяя значения, поэтому динамически сгенерированные входные данные будут сброшены. Только статический контент может быть сохранен без изменений. Чтобы сохранить динамический материал, вам понадобится дополнительная работа.

Этот вопрос выглядит аналогично вашему проблемному сценарию, который предлагает что-то для той дополнительной работы, которую вам нужно сделать для сохранения динамического содержимого.

...