Reputation:
I have a form like this:
<div class="form-row">
<div class="form-group col-md-6">
<label for="registerExtenedFirstName">Vorname</label>
<input type="text" class="form-control" name="registerExtenedFirstName[]" placeholder="Vorname" required="">
</div>
<div class="form-group col-md-6">
<label for="registerExtenedLastName">Nachname</label>
<input type="text" class="form-control" name="registerExtenedLastName[]" placeholder="Nachname" required="">
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6">
<label for="registerExtenedFirstName">Vorname</label>
<input type="text" class="form-control" name="registerExtenedFirstName[]" placeholder="Vorname" required="">
</div>
<div class="form-group col-md-6">
<label for="registerExtenedLastName">Nachname</label>
<input type="text" class="form-control" name="registerExtenedLastName[]" placeholder="Nachname" required="">
</div>
</div>
I try to push like this, the first and last name to an dict:
$('input[name^="registerExtenedFirstName"]').each(function() {
participants.push({
key: $(this).val() + $(this).find('input[name^="registerExtenedLastName"]').val(),
value: $(this).val() + ' ' + $(this).find('input[name^="registerExtenedLastName"]').val()
});
});
But, when I have names like this
Thomas Müller
Bernd Maier
after the push I have this:
(2) [{…}, {…}, {…}]
0: {key: "ThomasMüller", value: "Thomas Müller"}
1: {key: "BerndMüller", value: "Bernd Müller"}
it pushes only from the first the registerExtenedLastName to every array, and I don't why
Upvotes: 0
Views: 131
Reputation: 472
I would use another approach - search by div.form-row
. Here is the example code:
$('.form-row').each(function() {
participants.push({
key: $(this).find('input[name^="registerExtenedFirstName"]').val() + $(this).find('input[name^="registerExtenedLastName"]').val(),
value: $(this).find('input[name^="registerExtenedFirstName"]').val() + ' ' + $(this).find('input[name^="registerExtenedLastName"]').val()
});
});
Upvotes: 1
Reputation:
Ok, I could fix it. I had to search in the next DOM element like this:
$('input[name^="registerExtenedFirstName"]').each(function() {
participants.push({
key: $(this).val() + $(this).closest('div').next('div').find('input[name^="registerExtenedLastName"]').val(),
value: $(this).val() + ' ' + $(this).closest('div').next('div').find('input[name^="registerExtenedLastName"]').val()
});
});
Upvotes: 0