使用JQuery从本地存储中获取的复选框id
我正在处理一个表单,重新加载时必须保存并显示标记的复选框, 我编写了代码,可以将其保存到本地存储中,但现在我不知道如何从本地存储中获取复选框的id,以便在重新加载页面时再次选中它们 这是一个 守则:使用JQuery从本地存储中获取的复选框id,jquery,forms,checkbox,local-storage,Jquery,Forms,Checkbox,Local Storage,我正在处理一个表单,重新加载时必须保存并显示标记的复选框, 我编写了代码,可以将其保存到本地存储中,但现在我不知道如何从本地存储中获取复选框的id,以便在重新加载页面时再次选中它们 这是一个 守则: //此代码将标记的复选框保存在本地存储器中 $('.required option')。在('click',function()上{ var fav,fav=[]; $('.required option')。每个(function(){//运行每个复选框 fav={ id:$(this.attr
//此代码将标记的复选框保存在本地存储器中
$('.required option')。在('click',function()上{
var fav,fav=[];
$('.required option')。每个(function(){//运行每个复选框
fav={
id:$(this.attr('id'),
值:$(this.prop('checked'))
};
如果(fav.value==真){
fav.push(fav.id);
}
});
setItem(“复选框”,JSON.stringify(favs));
});代码>
使用localStorage.getItem()
获取项目,并使用JSON.parse()
将字符串解析为页面文档就绪状态下的js对象(在本例中为数组)
$.each(JSON.parse(localStorage.getItem("checkbox")),function(i,v){
$('#'+v).attr('checked','checked'); //or as stated in the comments .prop('checked', true)
});
使用localStorage.getItem()
获取项目,并使用JSON.parse()
将字符串解析为页面的document ready上的js对象(在本例中为数组)
$.each(JSON.parse(localStorage.getItem("checkbox")),function(i,v){
$('#'+v).attr('checked','checked'); //or as stated in the comments .prop('checked', true)
});
实现这一点的一个简单方法是只存储复选框的id
属性。存储未选中的项目有点多余。试试这个:
$('.required option')。在('click',function()上{
var favs=$('.必需选项:选中').map(函数(){
返回此.id;
}).get();
setItem(“复选框”,JSON.stringify(favs));
})
JSON.parse(localStorage.getItem(“复选框”)| |“[]”).forEach(函数(id){
$('#'+id).prop('checked',true);
})
实现这一点的一个简单方法是只存储复选框的id
属性。存储未选中的项目有点多余。试试这个:
$('.required option')。在('click',function()上{
var favs=$('.必需选项:选中').map(函数(){
返回此.id;
}).get();
setItem(“复选框”,JSON.stringify(favs));
})
JSON.parse(localStorage.getItem(“复选框”)| |“[]”).forEach(函数(id){
$('#'+id).prop('checked',true);
})
您只能存储复选框的ID,在示例中,我存储了带前缀的串联选择器字符串
var elems = $('.required-option');
elems.on('click', function() {
//Iterate checked checkboxes and store selector like #xxx
var checkedCheckboxes = elems.filter(':checked').map(function() {
return '#' + this.id;
}).get().join(',');
localStorage.setItem("checkedCheckboxes", checkedCheckboxes);
});
var checkedCheckboxesselector = localStorage.getItem("checkedCheckboxes");
if (!!checkedCheckboxesselector) {
$(checkedCheckboxesselector).prop('checked', true);
}
您只能存储复选框的ID,在示例中,我存储了带前缀的串联选择器字符串
var elems = $('.required-option');
elems.on('click', function() {
//Iterate checked checkboxes and store selector like #xxx
var checkedCheckboxes = elems.filter(':checked').map(function() {
return '#' + this.id;
}).get().join(',');
localStorage.setItem("checkedCheckboxes", checkedCheckboxes);
});
var checkedCheckboxesselector = localStorage.getItem("checkedCheckboxes");
if (!!checkedCheckboxesselector) {
$(checkedCheckboxesselector).prop('checked', true);
}
最好是.prop('checked',true)
因为attr()
不能与复选框或RadioButtons配合使用。如果您提供声明的文档@MarcosPérezGudeRead,请参见此处:从jQuery 1.6开始,.attr()方法会为未设置的属性返回undefined。要检索和更改DOM属性,例如表单元素的选中、选中或禁用状态,请使用.prop()方法。这是一个广泛而古老的主题。如果您想在DOM树上以友好方式管理属性,则必须使用prop()
而不是attr()
。事实上,您可以在stackoverflow上找到大量问题,OP使用了attr()
,但不适用于复选框或单选按钮,解决方案是更改为prop()
。有大量的文档,所以在谷歌上搜索,不难找到。这是关于这一点的最好解释的文章:。它是西班牙语的,但你可以用谷歌翻译。它最好.prop('checked',true)
因为attr()
不能与复选框或radiobuttonsca一起使用。你可以在这里提供声明的文档@MarcosPérezGudeRead:从jQuery 1.6开始,.attr()方法为尚未设置的属性返回未定义的。要检索和更改DOM属性,例如表单元素的选中、选中或禁用状态,请使用.prop()方法。这是一个广泛而古老的主题。如果您想在DOM树上以友好方式管理属性,则必须使用prop()
而不是attr()
。事实上,您可以在stackoverflow上找到大量问题,OP使用了attr()
,但不适用于复选框或单选按钮,解决方案是更改为prop()
。有大量的文档,所以在谷歌上搜索,不难找到。这是关于这一点的最好解释的文章:。它是西班牙语的,但你可以用谷歌翻译。