Проверьте следующее. Это минимальный, полный и проверяемый пример вашего проблемного сценария.
Как видите, есть два 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>
Когда вы попытаетесь запустить это, вы увидите, что жестко закодированный остается неизменным, а динамически сгенерированный сбрасывается, когда вы возвращаетесь к тому же, со страницы подтверждения.
Что происходит, когда вы возвращаетесь назад, сценарии на странице будут выполняться с самого начала, изменяя значения, поэтому динамически сгенерированные входные данные будут сброшены. Только статический контент может быть сохранен без изменений. Чтобы сохранить динамический материал, вам понадобится дополнительная работа.
Этот вопрос выглядит аналогично вашему проблемному сценарию, который предлагает что-то для той дополнительной работы, которую вам нужно сделать для сохранения динамического содержимого.