skip to Main Content

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..

2

Answers


  1. 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;
    }, {});
    
    Login or Signup to reply.
  2. 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.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search