gpt4 book ai didi

javascript - 使用本地存储预填表格

转载 作者:行者123 更新时间:2023-11-30 14:38:47 25 4
gpt4 key购买 nike

我正在将问题从 JSON 加载到我的 EJS 模板中,并希望从 localStorage 填充每个字段。下面保存每个下拉列表、文本和 slider 元素的最后一个值:

var select = document.getElementsByTagName('select');
for (var i = 0; i < select.length; i++){
select[i].value = localStorage.getItem(i);
}
jQuery("select").change(function () {
for (var i = 0; i < select.length; i++){
localStorage.setItem(i, select[i].value);
}
});

我对所有 “input” 标签重复这个。问题是 select 值也会传递给 textslider — 反之亦然(即如果我为 text 输入值slider,它们会覆盖 select 值,除非它们留空)。

我的最终目标是保存每个表单域的最新值,这样当我刷新页面时我的条目就不会丢失。

最佳答案

创建一个代表您保存的值的单个 localStorage 条目会优雅得多,而不是用每个字段的许多条目污染 LS。我会推荐这样的东西:

function save() {
const selects = document.querySelectorAll('select');
// select other element types
// ...
const selectValues = [...selects].map(select => select.value);
const textValues = [...textInputs].map(textInput => textInput.value);
const sliderValues = [...sliderInputs].map(sliderInput => sliderInput.value);
const savedObj = { selectValues, textValues, sliderValues };
localStorage.savedFormValues = JSON.stringify(savedObj);
}

那样的话,您只需在本地存储中创建一个条目,并且每个条目类型都截然不同。然后,要获取值,只需反向执行相同的操作即可:

function populate() {
const selects = document.querySelectorAll('select');
// ...
const { selectValues, textValues, sliderValues } = JSON.parse(localStorage.savedFormValues);
selectValues.forEach((selectValue, i) => selects[i].value = selectValue);
// ...

关于javascript - 使用本地存储预填表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50012540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com