Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

162
Vistas
get multiple form values as an array of object using a single click

I have multiple forms in a div. I would like to get the values of each form as an array of object in a single click.

<form data-category="1">
    <div class="form-group">
        <label for="usr">First Name:</label>
        <input type="text" class="form-control" id="usr" name="username" />
    </div>
    <div class="form-group">
        <label for="pwd">Last Name:</label>
        <input type="text" class="form-control" id="pwd" name="lname" />
    </div>
</form>

<form data-category="2">
    <div class="form-group">
        <label for="usr">Name:</label>
        <input type="text" class="form-control" id="usr" name="username" />
    </div>
    <div class="form-group">
        <label for="usr">Age:</label>
        <input type="number" class="form-control" id="usr" name="age" />
    </div>
    <div>
        <p>Gender></p>
        <div class="form-check">
            <label class="form-check-label">
                <input
                    type="radio"
                    class="form-check-input"
                    name="optradio"
                />Male
            </label>
        </div>
        <div class="form-check">
            <label class="form-check-label">
                <input
                    type="radio"
                    class="form-check-input"
                    name="optradio"
                />Female
            </label>
        </div>
    </div>
</form>
<button type="submit" class="btn btn-primary">Submit</button>

I would like to get the result where exh object has a key called form whose value is the form number and the another key called inputdata which is an object whose keys represnt the input numbers and value are input values:

[{
  form:1,
  inputdata:{1:"John",2:"John Doe"}
 },
 {
  form:2,
  inputdata:{1:"Jane",2:25,3:"female"}
 }]
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

You can probably do the following:

One other option can be to serialize the form data and then get the value of form, but this would work as well

const form = document.querySelectorAll('form');


function submitForm() {
  const data = [];
  for(let i=0; i<form.length; i++) {
    const elements = form[i].elements;
    data.push({form: form[i].getAttribute('data-category'), inputData: {}});
    for(let j=0; j<elements.length; j++) {
      if(elements[j].type !== 'radio') {
        data[i].inputData[[elements[j].name]] = elements[j].value;
      } else {
         if(elements[j].checked) {
          data[i].inputData[[elements[j].name]] = elements[j].value;
        }
      }
    }
  }
  console.log(data);
}
<form data-category="1">
    <div class="form-group">
        <label for="usr">First Name:</label>
        <input type="text" class="form-control" id="usr" name="firstName" />
    </div>
    <div class="form-group">
        <label for="pwd">Last Name:</label>
        <input type="text" class="form-control" id="pwd" name="lastName" />
    </div>
</form>

<form data-category="2">
    <div class="form-group">
        <label for="usr">Name:</label>
        <input type="text" class="form-control" id="usr" name="firstName" />
    </div>
    <div class="form-group">
        <label for="usr">Age:</label>
        <input type="number" class="form-control" id="usr" name="age" />
    </div>
    <div>
        <p>Gender></p>
        <div class="form-check">
            <label class="form-check-label">
                <input
                    type="radio"
                    class="form-check-input"
                    name="gender"
                    value="M"
                />Male
            </label>
        </div>
        <div class="form-check">
            <label class="form-check-label">
                <input
                    type="radio"
                    class="form-check-input"
                    name="gender"
                    valeu="F"
                />Female
            </label>
        </div>
    </div>
</form>
<button type="submit" class="btn btn-primary" onclick="submitForm()">Submit</button>

about 4 years ago · Juan Pablo Isaza Denunciar

0

You may use FormData and Object.fromEntries to get the form data easily like below:

const btn = document.querySelector("#submit");

btn.addEventListener("click", () => {
    const forms = document.querySelectorAll("form");
    const output = [];
    forms.forEach(form => {
        output.push({
            form: form.dataset.category,
            inputData: Object.fromEntries(new FormData(form)),
        });
    });

    console.log(output);
});
<!DOCTYPE html>
<html lang="en">
    <head> </head>
    <body>
        <form data-category="1">
            <div class="form-group">
                <label for="usr">First Name:</label>
                <input
                    type="text"
                    class="form-control"
                    id="usr"
                    name="username"
                />
            </div>
            <div class="form-group">
                <label for="pwd">Last Name:</label>
                <input type="text" class="form-control" id="pwd" name="lname" />
            </div>
        </form>

        <form data-category="2">
            <div class="form-group">
                <label for="usr">Name:</label>
                <input
                    type="text"
                    class="form-control"
                    id="usr"
                    name="username"
                />
            </div>
            <div class="form-group">
                <label for="usr">Age:</label>
                <input type="number" class="form-control" id="usr" name="age" />
            </div>
            <div>
                <p>Gender</p>
                <div class="form-check">
                    <label class="form-check-label">
                        <input
                            type="radio"
                            class="form-check-input"
                            name="gender"
                            value="1"
                        />Male
                    </label>
                </div>
                <div class="form-check">
                    <label class="form-check-label">
                        <input
                            type="radio"
                            class="form-check-input"
                            name="gender"
                            value="0"
                        />Female
                    </label>
                </div>
            </div>
        </form>

        <button id="submit" type="button" class="btn btn-primary">
            Submit
        </button>
    </body>
</html>

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda