我能够以我想要的方式存储文本,但无法使复选框正常工作。无论是否选中,它都将复选框值存储为“打开”。我如何设置默认情况下存储“关闭”并选中“打开”?
可以实现这一目标:
var value = $(this).val() && $(this).prop(checked);
JS小提琴:http://jsfiddle.net/cRJ23/17/
Storage.prototype.setObj = function (key, obj) {
return this.setItem(key, JSON.stringify(obj))
}
Storage.prototype.getObj = function (key) {
return JSON.parse(this.getItem(key))
}
var Survey = {},
Surveys = {},
save = function () {
$('input, select, textarea').each(function () {
var value = $(this).val(),
name = $(this).attr('name');
console.log('Saving');
console.log(name + ':' + value);
Survey[name] = value;
});
if (localStorage.getObj('Surveys') != null) {
Surveys = localStorage.getObj('Surveys');
}
Surveys[$('#FirstName').val() + '.' + $('#LastName').val()] = Survey; //store in big list
localStorage.setObj('Surveys', Surveys);
}
答案 0 :(得分:2)
希望这会有所帮助:
var value = $(this).val();
var name = $(this).attr('name');
if($(this).hasClass('checkers')){
value = $(this).is(":checked")
if(value){
value='on';
}else{
value='off';
}
}
http://jsfiddle.net/juvian/cRJ23/22/
您不应使用.val来检查是否选中了复选框,请使用.is('checked')
答案 1 :(得分:1)
您应该使用.prop()
或属性.val()
.checked
来获取复选框的状态
$('input, select, textarea').each(function () {
var value = ($(this).is('[type="checkbox"]')) ? this.checked :$(this).val(),
name = $(this).attr('name');
console.log('Saving');
console.log(name + ':' + value);
Survey[name] = value;
});
答案 2 :(得分:0)
工作小提琴 http://jsfiddle.net/jFeLv/
val函数不像您期望的那样使用复选框,从中获取true或false的方法是使用is(':checked')函数。
$(this).is(':checked')
小提琴是代码的修改版本,修改一行似乎工作正常,通过短路if变量“value”来检查它是否是一个复选框。
($(this).attr('type','checkbox') ? value = $(this).val() : value = $(this).is(':checked'));
我希望这会有所帮助。