Javascript 保留动态提交在表单提交上选择选项
我有一个带有动态填充的select的html表单:Javascript 保留动态提交在表单提交上选择选项,javascript,html,forms,select,form-submit,Javascript,Html,Forms,Select,Form Submit,我有一个带有动态填充的select的html表单: <form action="/" method="post" onsubmit="beforeSubmit()" id="crypto_form"> <textarea name="message" id="textarea_message" oninput="this.value.toUpperCase()" cols="60" rows="5" placeholder="Enter Message"
<form action="/" method="post" onsubmit="beforeSubmit()" id="crypto_form">
<textarea name="message" id="textarea_message" oninput="this.value.toUpperCase()" cols="60" rows="5" placeholder="Enter Message"></textarea>
<select form="crypto_form" name="keydata" id="select_keydata"></select>
<button type="submit" name="type" id="btn_encrypt" value="encrypt">Encrypt</button>
<button type="submit" name="type" id="btn_decrypt" value="decrypt">Decrypt</button>
</form>
加密
解密
问题是,当我提交表单时,所有select值都消失了。当我提交表格时,如何保留它们?我研究了类似的问题,但没有一个能解决我的特殊情况
我认为正在发生的是页面正在重新加载,这就是为什么选项正在消失
我使用golang作为net/http
的后端。虽然,我不认为它在这里有太多的联系,但请让我知道它是否有助于解决问题
注意:
beforesmit()
函数为空。有什么我可以放进去保留选项的吗?您应该替换此代码:
type="submit"
到
type=“button”
加密
解密
如果网站正在刷新,您可以使用localStorage
或sessionStorage
将数据保存在浏览器中
建议使用ES6映射来存储
值。然后可以将映射转换为JSON字符串并存储在localStorage/sessionStorage
下面是一个向地图添加
文本和值的片段:
map.set(option.text, option.value)
因此,您的beforesmit()
函数如下所示:
function beforeSubmit() {
sessionStorage.myMap = JSON.stringify(Array.from(map));
};
当您想要检索数据时,比如说,在窗口中。onload
您可以按如下操作:
var map;
window.onload = function() {
if (sessionStorage.myMap != null) {
map = new Map(JSON.parse(sessionStorage.myMap));
} else {
map = new Map();
}
};
你提供的信息很难回答。提交后整个页面是否刷新?选择值何时消失?提交之后或之前?@f-CJ是。我相信是这样。我不认为这些选项会消失,否则。好吧,如果网站正在刷新。。。您可以使用localstorage存储选项并在刷新后使用它们,也可以存储在后端动态创建的选项,并在加载页面时进行请求。@f-CJ yup,在进一步挖掘后找到它!我正要发布一个答案。谢谢你!你想获得荣誉?然后通过javascript提交表格?
var map;
window.onload = function() {
if (sessionStorage.myMap != null) {
map = new Map(JSON.parse(sessionStorage.myMap));
} else {
map = new Map();
}
};