As displayed below I am working on a survey, I've spent most of the night getting the radio buttons to work and I have now ran into a new issue. How do I go about getting the text fields and checkboxes to display in addition to the radio buttons when the user clicks submit.
Currently, only question 2 responses are recorded and displayed. Thank You
http://jsbin.com/zuxoqe/1/edit?html,output
HTML
<div id="container">
<div id="main" class="cf">
<div id="content">
<div id="text">
<form action="#" method="post" class="mySurvey" id="mySurveyID">
<fieldset>
<p>Personal Information:
<br>
First name: <label><input type="text" name="firstname" value=""></label>
<br>
Last name: <label><input type="text" name="lastname" value=""></label>
<br>
Gender:
<select name="gender">
<option value="male">Male</option>
<option value="female">Female</option>
</select></p>
<p>Question 1: How did you hear about us? Check ALL that apply</p>
<p>
<label><input type="checkbox" name="Q3" value="internet">Internet<label>
<label><input type="checkbox" name="Q3" value="tv">TV<label>
<label><input type="checkbox" name="Q3" value="radio">Radio<label>
<label><input type="checkbox" name="Q3" value="newspaper">Newspaper<label>
<label><input type="checkbox" name="Q3" value="mouth">Word of Mouth<label>
</p>
<p>Question 2: Overall HOW would you rate your Sales Representative?</p>
<p>
<label><input type="radio" name="ques5" value="Amazing"> Amazing</label>
<label><input type="radio" name="ques5" value="Very Good"> Very Good</label>
<label><input type="radio" name="ques5" value="Neutral"> Neutral</label>
<label><input type="radio" name="ques5" value="Fair"> Fair</label>
<label><input type="radio" name="ques5" value="Poor"> Poor</label>
</p>
<p>Question 3: What factors contributed to your purchase of this product?
<p>
<label><textarea name="Q2" rows="5" cols="60"></textarea><label>
</p>
<p><button type="button" name="getSelection">Submit</button></p>
</fieldset>
</form>
</div> <!-- end text -->
</div> <!-- end content -->
</div> <!-- end container div -->
</body>
</html>
JS
<script type="text/javascript">
// to remove from global namespace
(function() {
function getRadioSelection(form, name) {
var val;
var radios = form.elements[name];
for (var i=0, len=radios.length; i<len; i++) {
if ( radios[i].checked ) {
val = radios[i].value;
break;
}
}
return val;
}
document.forms['mySurveyID'].elements['getSelection'].onclick = function() {
alert( 'The selected radio button\'s value is: ' + getRadioSelection(this.form, 'ques5') );
};
// disable submission of all forms on this page
for (var i=0, len=document.forms.length; i<len; i++) {
document.forms[i].onsubmit = function() { return false; };
}
}());
</script>
You do not need to use a custom loop to retrieve the selected combos or checkboxes.
If I may have a suggestion, you may use querySelector
and querySelectorAll
that are designed for this.
Also you may want to use form.addEventListener("submit", callback);
instead of form.onsubmit
so that you can add more than one listener for the submission of a form and that you do not have to hack into your button's onclick
event.
Here is a working example:
// Avoid polluting global namespace.
(function() {
// Helpers
function forEach(list, callback){ return Array.prototype.forEach.call(list, callback); };
function map(list, callback){ return Array.prototype.map.call(list, callback); };
var survey = document.forms['mySurveyID'];
// Listen for submit events (need a "submit" input instead of
// "button", cf HTML).
survey.addEventListener("submit", function(eat){
// Retrieve question 1's checked inputs.
var q1CheckedInputs = survey.querySelectorAll("input[name=Q3]:checked");
// Extract inputs' values.
var q1Answers = map(q1CheckedInputs, function(inputNode){
return inputNode.value;
});
// Retrieve question 2's answer.
var q2Answer = survey.querySelector("input[name=ques5]:checked").value;
// Retrieve question 3's answer
var q3Answer = survey.querySelector("textarea[name=Q2]").value;
// Show results.
alert('Q1: "' + q1Answers.join('", "') + '\n' +
'Q2: "' + q2Answer + '\n' +
'Q3: "' + q3Answer + '"');
});
// Disable submission of all forms on this page.
forEach(document.forms, function(form){
form.addEventListener("submit", function(evt){
evt.preventDefault();
});
});
}());
<!DOCTYPE html>
<body>
<div id="container">
<div id="main" class="cf">
<div id="content">
<div id="text">
<form action="#" method="post" class="mySurvey" id="mySurveyID">
<fieldset>
<p>Personal Information:
<br>
First name: <label><input type="text" name="firstname" value=""></label>
<br>
Last name: <label><input type="text" name="lastname" value=""></label>
<br>
Gender:
<select name="gender">
<option value="male">Male</option>
<option value="female">Female</option>
</select></p>
<p>Question 1: How did you hear about us? Check ALL that apply</p>
<p>
<label><input type="checkbox" name="Q3" value="internet">Internet<label>
<label><input type="checkbox" name="Q3" value="tv">TV<label>
<label><input type="checkbox" name="Q3" value="radio">Radio<label>
<label><input type="checkbox" name="Q3" value="newspaper">Newspaper<label>
<label><input type="checkbox" name="Q3" value="mouth">Word of Mouth<label>
</p>
<p>Question 2: Overall HOW would you rate your Sales Representative?</p>
<p>
<label><input type="radio" name="ques5" value="Amazing"> Amazing</label>
<label><input type="radio" name="ques5" value="Very Good"> Very Good</label>
<label><input type="radio" name="ques5" value="Neutral"> Neutral</label>
<label><input type="radio" name="ques5" value="Fair"> Fair</label>
<label><input type="radio" name="ques5" value="Poor"> Poor</label>
</p>
<p>Question 3: What factors contributed to your purchase of this product?
<p>
<label><textarea name="Q2" rows="5" cols="60"></textarea><label>
</p>
<p><button type="submit" name="getSelection">Submit</button></p>
</fieldset>
</form>
</div> <!-- end text -->
</div> <!-- end content -->
</div> <!-- end container div -->
</body>
</html>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With