表单选择不保存在本地存储中
Form select not saving in localStorage
我正在为iAd Producer开发HTML视图。我正在尝试添加一个句子列表,其中包含学生可以选择的替代词,并将这些值保存到localStorage,因为它们在重新访问页面时更改并使用这些值重新填充选择。
我正在调整我编写的一些代码,这些代码可以很好地在页面上保存多个输入框。但是在尝试将其与多个选择一起使用时,我的行为很奇怪。基本上,无论以哪种顺序完成答案,都只存储最后选择的值。重新访问页面时,代码会尝试将该值放入每个选择中。当然,对于没有相应值的两个选择,这将失败。
我不明白为什么会发生这种情况,希望有人能发现显而易见的事情。谢谢。
<div>
<script type="text/javascript">
var uniqueId = "FC2-U2-A-P29";
$(document).ready(function () {
function onStartup() {
$.each( $("select"), function() {
if (localStorage[$(this).attr("value")+uniqueId]) {
$(this).val(localStorage[$(this).attr("value")+uniqueId]);
}
});
}
onStartup();
});
$('.drop').change(function () {
localStorage[$(this).attr("value")+uniqueId] = $(this).val();
});
</script>
<form>
<label class="number">1.</label>
<label class="text">Breakfast is the </label>
<select name="select1" class="drop">
<option value="blank">Choose a word</option>
<option value="one1">one</option>
<option value="first1">first</option>
</select>
<label class="text"> meal of the day.</label>
<br>
<label class="number">2.</label>
<label class="text">I always eat </label>
<select name="select2" class="drop">
<option value="blank">Choose a word</option>
<option value="three2">three</option>
<option value="third2">third</option>
</select>
<label class="text"> meals a day.</label>
<br>
<label class="number">3.</label>
<label name="select3" class="text">My football team is in</label>
<select class="drop">
<option value="blank">Choose a word</option>
<option value="two3">two</option>
<option value="second3">second</option>
</select>
<label class="text"> place in the league.</label>
<br>
<button class="clearButton" onclick="clearAnswers()">Clear </button>
<script type="text/javascript">
function clearAnswers() {
$.each( $("select"), function() {
if (localStorage[$(this).attr("value")+uniqueId]) {
localStorage.removeItem($(this).attr("value")+uniqueId);
$(this).val("blank");
}
location.reload();
});
}
</script>
</form>
</div>
此代码在 select 中失败的可能原因是:
$.each( $("select"), function() {
if (localStorage[$(this).attr("value")+uniqueId]) { //select doesn't have any attribute value.
$(this).val(localStorage[$(this).attr("value")+uniqueId]);
}
});
选择标记没有任何值属性。我认为.val()
是你在这里需要的。如果你看一下代码,你基本上是在迭代选择标签并检查选择的属性(不存在value
)。尝试将其更改为 .val(),然后尝试。
要从本地存储保存和加载内容,请使用:
localStorage.setItem(<key>, <value>);
和
localStorage.getItem(<key>);
您的代码存在多个问题。
第一个是你应该使用 .val()
而不是 .attr('value')
.
第二个是在本地存储中添加值的代码是在完全创建 DOM 之前执行的,因此选择尚不存在。要解决此问题,您需要在 document.ready(又名 $(function() { });
)上绑定更改事件。
我用修改后的代码制作了一个粘贴:http://jsbin.com/jubijuyatu/2/
您的选择器无效。
在所有情况下都使用$("option:selected",this ).text()+uniqueId;
更改$(this).attr("value")+uniqueId
。
- 当会话存储阵列中存在大量元素时,如何从中删除元素
- 安卓phonegap应用程序与三星Galaxy设备上的SQlite和本地存储存在问题
- Azure Blob 存储 请求的资源错误中不存在访问控制允许源标头
- 将此 pdf 保存在 ionic 上的缓存/本地存储中
- 等到元素存在,循环,然后存储在变量中
- 使用 AngularJS 将数据保存在 JSON 本地存储中
- 将数据保存在 ember 简单身份验证中的浏览器本地存储中
- 检查 s3 存储桶中是否存在单个对象
- 如何擦除、清除、擦除保存在iPad主屏幕上的网络应用程序的HTML5本地存储
- javascript本地存储查找是否存在
- 在localStorage中存储HTTP Basic授权标头是否存在任何安全问题
- 是否存在一种神奇的后端服务,前端程序员可以在其中存储数据
- Lawnchair:检查存储及其文档是否存在
- extjs网格不显示预期的数据,即使存储,列存在于网格对象
- 如何比较保存在html5本地存储的jquery日期已经过去了12个小时
- 直接向s3 / client上传文件.使用这种方法在s3存储桶中存储未使用的文件是否存在问题?
- 将具有唯一id的对象集合存储为以id作为键的关联数组,而不是作为常规数组,是否存在缺陷?
- 复选框和
- 登录Facebook,获取数据,如果数据不存在,则存储在MySQL数据库中
- 使用HTML5 web存储将用户输入保存在HTML页面上