please help. I have such a code with Checkboxes. I need to shorten it, namely to go through it through Foreach. If you can shorten it in another way, then please write it..
let FormData = {
DisplayName: $("#DisplayName").is(":checked"),
Department: $("#Department").is(":checked"),
Post: $("#Post").is(":checked"),
Phone: $("#Phone").is(":checked"),
Location: $("#Location").is(":checked"),
Dinner: $("#Dinner").is(":checked")
}
console.log(JSON.stringify(FormData));
I haven't really tried anything yet. But I didn't really find the answer I needed..
CodePudding user response:
You can declare the fields separately in an array and then use the Array.reduce
method to make the object you want:
let FormData = ['DisplayName', 'Department', 'Post', 'Phone', 'Location', 'Dinner'].reduce((acc, field) => {
acc[field] = $(`#${field}`).is(':checked');
return acc;
}, {});
CodePudding user response:
If you don't know the names of the checkboxes and you want to perform this operation of collecting their state on all the checkboxes of a form, you can use this code.
var jsonObject = {};
// For each checkbox - Feed Json object
$('input[type=checkbox]').each(function(index){ jsonObject[$(this).attr('id')] = $(this).is(':checked'); });
console.log(JSON.stringify(jsonObject));
The principle is to use a selection of the checkboxes present on the page to then perform a loop on this selection and recover for each of the boxes their ID and their state.