JSFiddle - React, Tailwind, and code Playground
HTML
<form id="form" method="post" action="/url" >
Group 1
<input type="checkbox" name="filter_a[]" value="1">
<input type="checkbox" name="filter_a[]" value="2">
<input type="checkbox" name="filter_a[]" value="3">
Group 2
<input type="checkbox" name="filter_b[]" value="1">
<input type="checkbox" name="filter_b[]" value="2">
<input type="checkbox" name="filter_b[]" value="3">
Group 3
<input type="checkbox" name="filter_c[]" value="1">
<input type="checkbox" name="filter_c[]" value="2">
<input type="checkbox" name="filter_c[]" value="3">
<input type="submit" id="filterapply" value="Filter Apply" />
</form>
JavaScript
var hasClass = function(element, className) {
return (new RegExp("( |^)" + className + "( |$)", "g")).test(element.className);
};
var form = document.getElementById('form');
var fieldValue = {
allReg : /\[([a-zA-Z0-9-]*)\]/g,
isObjReg : /\[(.*)\]/g,
serialize: function (a, b) {
var c = [];
for (var d in a) {
var e = b ? b + "[" + d + "]" : d, f = a[d];
c.push("object" == typeof f ? fieldValue.serialize(f, e) : encodeURIComponent(e) + "=" + encodeURIComponent(f))
}
return c.join("&")
},
get : function(fieldName, reference) {
var arr = [fieldName.replace(fieldValue.isObjReg, '')];
var match;
while (match = fieldValue.allReg.exec(fieldName)) {
arr.push(match[1]);
}
if (reference === undefined) return undefined;
if (reference[arr[0]] === undefined) return undefined;
var tmpObj = reference;
for (var i = 0; i < arr.length; i++) {
if (tmpObj[arr[i]] !== undefined) {
if (tmpObj[arr[i]] == '') return tmpObj[arr[i]];
tmpObj = tmpObj[arr[i]]
}
}
return tmpObj;
},
set : function(fieldName, value, reference, hard) {
hard = hard || !1;
var arr = [fieldName.replace(fieldValue.isObjReg, '')];
var match;
while (match = fieldValue.allReg.exec(fieldName)) {
arr.push(match[1]);
}
if (reference === undefined) return undefined;
var tmpObj = reference;
for (var i = 0; i < arr.length; i++) {
if (arr[i+1] != undefined) {
if (arr[i+1] == '') {
tmpObj[arr[i]] = tmpObj[arr[i]] || [];
if (hard) {
tmpObj[arr[i]] = value;
} else {
tmpObj[arr[i]].push(value);
}
} else {
...