Reputation: 69
EDIT: Thanks Cole Faraday for answering my question.
I am trying to make a form with multiple radio buttons, which will record the selected radio button for each different question once a submit button is pressed.
What is the best way to do this with jQuery? I don't need to use my current set-up. If there is a better way to do it with different radio buttons or just a different input method, I'm open to those suggestions as well. Thanks
<form id="myForm">
<div class="row justify-content-center" id="mainContainer" style="background-color: #c6d7f2">
<div class="col-md-8" style="margin: 0 auto; background-color: white">
<h2 class="subtitle">Flavors</h2>
<div class="col-md-8" style="background-color: #c9c9c9; margin: 0 auto;">
<div class=text-right>
<div style="float: left;">
Spicy:
</div>
<label class="custom-control custom-radio">
<input id="radio1" name="spicy" type="radio" class="custom-control-input" value=0>
<span class="custom-control-indicator"></span>
<span class="custom-control-description">0</span>
</label>
<label class="custom-control custom-radio">
<input id="radio2" name="spicy" type="radio" class="custom-control-input" value=1>
<span class="custom-control-indicator"></span>
<span class="custom-control-description">1</span>
</label>
<label class="custom-control custom-radio">
<input id="radio3" name="spicy" type="radio" class="custom-control-input" value=2>
<span class="custom-control-indicator"></span>
<span class="custom-control-description">2</span>
</label>
<label class="custom-control custom-radio">
<input id="radio4" name="spicy" type="radio" class="custom-control-input" value=3>
<span class="custom-control-indicator"></span>
<span class="custom-control-description">3</span>
</label>
<label class="custom-control custom-radio">
<input id="radio5" name="spicy" type="radio" class="custom-control-input" value=4>
<span class="custom-control-indicator"></span>
<span class="custom-control-description">4</span>
</label>
<label class="custom-control custom-radio">
<input id="radio6" name="spicy" type="radio" class="custom-control-input" value=5>
<span class="custom-control-indicator"></span>
<span class="custom-control-description">5</span>
</label>
</div>
</div>
<div class="col-md-8" style="margin: 0 auto;">
<div class="text-right">
<div style="float: left;">
Sour:
</div>
<label class="custom-control custom-radio">
<input id="radio1" name="sour" type="radio" class="custom-control-input" value=0>
<span class="custom-control-indicator"></span>
<span class="custom-control-description">0</span>
</label>
<label class="custom-control custom-radio">
<input id="radio2" name="sour" type="radio" class="custom-control-input" value=1>
<span class="custom-control-indicator"></span>
<span class="custom-control-description">1</span>
</label>
<label class="custom-control custom-radio">
<input id="radio3" name="sour" type="radio" class="custom-control-input" value=2>
<span class="custom-control-indicator"></span>
<span class="custom-control-description">2</span>
</label>
<label class="custom-control custom-radio">
<input id="radio4" name="sour" type="radio" class="custom-control-input" value=3>
<span class="custom-control-indicator"></span>
<span class="custom-control-description">3</span>
</label>
<label class="custom-control custom-radio">
<input id="radio5" name="sour" type="radio" class="custom-control-input" value=4>
<span class="custom-control-indicator"></span>
<span class="custom-control-description">4</span>
</label>
<label class="custom-control custom-radio">
<input id="radio6" name="sour" type="radio" class="custom-control-input" value=5>
<span class="custom-control-indicator"></span>
<span class="custom-control-description">5</span>
</label>
</div>
</div>
<div id="submitButtonContainer">
<button type="submit" class="btn btn-primary" id="submitButton">Submit</button>
</div>
</form>
Upvotes: 0
Views: 385
Reputation: 180
I think what you are looking for is .serializeArray(). To store the information in a key value pair object do this:
function submitForm(){
var formObj = {};
var inputs = $("#myForm").serializeArray();
$.each(inputs, function (i, input) {
formObj[input.name] = input.value;
});
alert(formObj["spicy"]);
alert(formObj["sour"]);
}
And change your form tag so that it calls the javascript function on submit
<form id="myForm" onsubmit="submitForm()">
<!-- Normal form html elements -->
</form>
If you want to keep the information as a JSON object you can make it far simpler and just change the javascript to this
function submitForm(){
var inputs = $("#myForm").serializeArray();
}
Upvotes: 1