Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 保留动态提交在表单提交上选择选项_Javascript_Html_Forms_Select_Form Submit - Fatal编程技术网

Javascript 保留动态提交在表单提交上选择选项

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"

我有一个带有动态填充的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"></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();
    }
};