html 选择调用history.back()后不保存数据

Fer*_*uza 1 javascript select phpmailer

我正在使用phpmailer构建一个表单,它包含3个步骤:表单本身、信息确认页面和邮件发送消息页面。当用户位于信息确认页面时,他可以通过总线onclick="history.back();"返回并更正所写入的信息。一切工作正常,所有字段都保持按照用户的方式编写,除了多年来使用以下代码的选择按钮:

\n\n
<select id="f_year" name="f_year" data-validation-engine="validate[required]"\xe3\x80\x80class="validate[required]"></select>\n\n<script>\nvar start = 1900;\n    var end = new Date().getFullYear();\n    var options = "<option disabled selected value>\xe5\xb9\xb4</option>";\n    for(var year = start ; year <=end; year++){\n        options += "<option>"+ year +\xe3\x80\x80"\xe5\xb9\xb4" + "</option>";\n    }\n    document.getElementById("f_year").innerHTML = options;\n</script>\n
Run Code Online (Sandbox Code Playgroud)\n\n

当单击它来更正信息时,该选择元素中的数据根本不会保存。\n我应该做什么?

\n

Rom*_*rra 5

检查以下内容。这是您的问题场景的最小、完整且可验证的示例。

\n\n

如您所见,有两个SELECT元素,一个是硬编码的,另一个是动态生成的(与您提供的相同脚本)。

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

当您尝试运行此程序时,您会发现硬编码的代码保持不变,而动态生成的代码则在您从确认页面导航回同一页面时重置。

\n\n

发生的情况是,当您向后导航时,页面上的脚本将从头开始执行,更改值,因此动态生成的输入将被重置。只有静态内容才能保持完整。为了保持动态内容完好无损,您将需要一些额外的工作。

\n\n

这个问题看起来与您的问题场景类似,这表明您需要做一些额外的工作来保留动态内容。

\n