Javascript 分组复选框选择
我有一系列的复选框,我正试图按它们的名称对选择进行分组,并将选择存储为一个集合。所以我想要的最终输出是这样的Javascript 分组复选框选择,javascript,jquery,Javascript,Jquery,我有一系列的复选框,我正试图按它们的名称对选择进行分组,并将选择存储为一个集合。所以我想要的最终输出是这样的 { 'E113': [{'id':'sxk1', value: '19'}, {'id':'sxk22', value: '29'}], 'E013': [{'id':'kxk1', value: '22'}, {'id':'sxk3', value: '15'}] } 事实上,情况并非如此。它会在这些数组周围添加“”,如果我只选中一个复选框,则不会将其包装到数组中 这是我的JS $(
{
'E113': [{'id':'sxk1', value: '19'}, {'id':'sxk22', value: '29'}],
'E013': [{'id':'kxk1', value: '22'}, {'id':'sxk3', value: '15'}]
}
事实上,情况并非如此。它会在这些数组周围添加“”,如果我只选中一个复选框,则不会将其包装到数组中
这是我的JS
$(".checkbox").click(function() {
var selectionForm = JSON.stringify($('#form').serializeObject())
console.log(selectionForm)
})
$.fn.serializeObject = function()
{
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name] !== undefined) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
这是我的小提琴
下面是我如何得到我的标记
<form id="form">
<input type="checkbox" class="checkbox" name="E113" value="{'id':'sxk1', value: '19'}"/>
<input type="checkbox" class="checkbox" name="E113" value="{'id':'sxk22', value: '29'}"/>
<input type="checkbox" class="checkbox" name="E013" value="{'id':'kxk1', value: '22'}"/>
<input type="checkbox" class="checkbox" name="E013" value="{'id':'sxk3', value: '15'}"/>
</form>
$('.checkbox')。在('click',function()上{
var o={};
$('.checkbox:checked')。每个(函数(){
var n=$(this.attr(“name”),
//将您的值转换为有效的JSON(否则,我们必须使用eval,不):
v=$(this.val().replace(/\'/g'”).replace(/value:/,'value:');
if(o[n]){
o[n].push(JSON.parse(v));
}否则{
o[n]=[JSON.parse(v)];
}
});
$('.output').html(JSON.stringify(o));
});
$('.checkbox')。在('click',function()上{
var o={};
$('.checkbox:checked')。每个(函数(){
var n=$(this.attr(“name”),
//将您的值转换为有效的JSON(否则,我们必须使用eval,不):
v=$(this.val().replace(/\'/g'”).replace(/value:/,'value:');
if(o[n]){
o[n].push(JSON.parse(v));
}否则{
o[n]=[JSON.parse(v)];
}
});
$('.output').html(JSON.stringify(o));
});代码>
您编写的JSON使用单引号”
无效,您应该使用双引号“
。您的值也需要引号
<input type="checkbox" class="checkbox" name="E113" value='{"id":"sxk1", "value": "19"}'/>
<input type="checkbox" class="checkbox" name="E113" value='{"id":"sxk22", "value": "29"}'/>
<input type="checkbox" class="checkbox" name="E013" value='{"id":"kxk1", "value": "22"}'/>
<input type="checkbox" class="checkbox" name="E013" value='{"id":"sxk3", "value": "15"}'/>
然后,在向现有数组追加/推送数据时,使用JSON.parse
检索Javascript对象而不是文本字符串:JSON.parse(this.value)
修正错误:您编写的JSON使用单引号”
,这是无效的,您应该使用双引号“
”。您的值也需要引号
<input type="checkbox" class="checkbox" name="E113" value='{"id":"sxk1", "value": "19"}'/>
<input type="checkbox" class="checkbox" name="E113" value='{"id":"sxk22", "value": "29"}'/>
<input type="checkbox" class="checkbox" name="E013" value='{"id":"kxk1", "value": "22"}'/>
<input type="checkbox" class="checkbox" name="E013" value='{"id":"sxk3", "value": "15"}'/>
然后,在向现有数组追加/推送数据时,使用JSON.parse
检索Javascript对象而不是文本字符串:JSON.parse(this.value)
修复了小提琴:我看不到任何小提琴。@ZakariaAcharki--我忘了添加它:-)…只是用它更新了问题。在这里,我看不到任何小提琴。@ZakariaAcharki——我忘了添加它:-)…只是用它更新了问题。不管怎样都可以