Close. Using your example above, if I check a radio button in each of the two groups, but leave the text fields blank, I get the alerts, but also get the "OK" alert, and then the form submits...
Main Topics
Browse All TopicsI have a form that will have:
1. A variable number of groups of radio buttons, but at least one group.
2. Each group will have a variable number of actual radio buttons, but at least two.
3. Two text fields.
I need a script that will ensure that a radio button is checked in each group, and the 2 text fields each have a value. This needs to work for any number of radio button groups, and for any number of radio buttons per group.
Thanks.
Example form:
<form name="myForm">
<table>
<tr>
<td align="right">Question 1:</td>
</tr>
<tr>
<td>1 -- <input type="radio" name="rdoQ_1" value="1"></td>
</tr>
<tr>
<td>2 -- <input type="radio" name="rdoQ_1" value="2"></td>
</tr>
<tr>
<td>3 -- <input type="radio" name="rdoQ_1" value="3"></td>
</tr>
<tr>
<td align="right">Question 2:</td>
</tr>
<tr>
<td>1 -- <input type="radio" name="rdoQ_2" value="1"></td>
</tr>
<tr>
<td>2 -- <input type="radio" name="rdoQ_2" value="2"></td>
</tr>
<tr>
<td>3 -- <input type="radio" name="rdoQ_2" value="3"></td>
</tr>
<tr>
<td>4 -- <input type="radio" name="rdoQ_2" value="4"></td>
</tr>
<tr>
<td>5 -- <input type="radio" name="rdoQ_2" value="5"></td>
</tr>
</table>
<input type="text" name="txt1"><br>
<input type="text" name="txt2"><br>
<input type="submit" value="Submit">
</form>
This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.
Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.
If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.
Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.
Access the answers to your technology questions today.
30-day free trial. Register in 60 seconds.
Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Try it out and discover for yourself.
30-day free trial. Register in 60 seconds.
Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.
<html>
<head>
<title>Radio Validate Document</title>
</head>
<body>
<script language="javascript">
var radNames = new Array();
var radValues = new Array();
var radCnt = 0;
var txtFlds = new Array();
var txtCnt = 0;
function UpdateFieldList (radObj) {
var bFound = false;
for (var rx=0; rx < radCnt; rx++) {
if (radObj.name.match(radName
bFound = true;
break;
}
}
if (!bFound) {
radNames[radCnt] = radObj.name;
radValues[radCnt] = '';
radCnt++;
}
}
function UpdateValueList (radObj) {
for (var rx=0; rx < radNames.length; rx++) {
if (radObj.name.match(radName
radValues[rx] = radObj.value;
break;
}
}
}
function CheckForSelection () {
var retCode = true;
for (var rx=0; rx < radValues.length; rx++) {
if (!radValues[rx].length) {
alert ('Radio Button ' + radNames[rx] + ' is not selected');
retCode = false;
}
}
for (var tx=0; tx < txtFlds.length; tx++) {
if (!txtFlds[tx].value.length
alert ('Text Field ' + txtFlds[tx].name + ' has no value');
retCode = false;
}
}
return (retCode);
}
function validatePage(form) {
var elems = form.elements;
for (var ix=0; ix < elems.length; ix++) {
var elem = elems[ix];
if (elem.type.match('radio'))
UpdateFieldList(elem);
if (elem.checked) {
UpdateValueList(elem);
}
}
if (elem.type.match('text')) {
txtFlds[txtCnt++] = elem;
}
}
if (CheckForSelection()) {
alert ('OKAY');
}
else {
return false;
}
return (CheckForSelection());
}
</script>
<form name="myForm">
<table>
<tr>
<td align="right">Question 1:</td>
</tr>
<tr>
<td>1 -- <input type="radio" name="rdoQ_1" value="1"></td>
</tr>
<tr>
<td>2 -- <input type="radio" name="rdoQ_1" value="2"></td>
</tr>
<tr>
<td>3 -- <input type="radio" name="rdoQ_1" value="3"></td>
</tr>
<tr>
<td align="right">Question 2:</td>
</tr>
<tr>
<td>1 -- <input type="radio" name="rdoQ_2" value="1"></td>
</tr>
<tr>
<td>2 -- <input type="radio" name="rdoQ_2" value="2"></td>
</tr>
<tr>
<td>3 -- <input type="radio" name="rdoQ_2" value="3"></td>
</tr>
<tr>
<td>4 -- <input type="radio" name="rdoQ_2" value="4"></td>
</tr>
<tr>
<td>5 -- <input type="radio" name="rdoQ_2" value="5"></td>
</tr>
</table>
<input type="text" name="txt1"><br>
<input type="text" name="txt2"><br>
<input type="submit" value="Submit" onClick="return (validatePage(this.form));
</form>
</body>
</html>
That's it, with one minor issue.
Let's say I click submit with 2 things wrong: one of the radio button groups does not have a selection, and one of the text fields is empty. If I correct the radio group by making a selection, and then click submit again before correcting the empty text field, then I am alerted twice for the empty text field.
In fact, for each time I click submit with an empty text field, I am alerted that many more times...
Another example:
All fields are ok except one text field. I click submit. I get an alert. I click the "ok" in the alert, but do not correct the empty field. I click submit again. Now I get 2 alerts for that field. I click "ok" in each of them, clcik submit again, now 3 alerts...
Is there a way to limit this to one alert?
Thanks
This should do it..
Added a ResetCounters()..
<html>
<head>
<title>Radio Validate Document</title>
</head>
<body>
<script language="javascript">
var radNames = new Array();
var radValues = new Array();
var radCnt = 0;
var txtFlds = new Array();
var txtCnt = 0;
function ResetCounters() {
radCnt =0;
txtCnt =0;
}
function UpdateFieldList (radObj) {
var bFound = false;
for (var rx=0; rx < radCnt; rx++) {
if (radObj.name.match(radName
bFound = true;
break;
}
}
if (!bFound) {
radNames[radCnt] = radObj.name;
radValues[radCnt] = '';
radCnt++;
}
}
function UpdateValueList (radObj) {
for (var rx=0; rx < radNames.length; rx++) {
if (radObj.name.match(radName
radValues[rx] = radObj.value;
break;
}
}
}
function CheckForSelection () {
var retCode = true;
for (var rx=0; rx < radValues.length; rx++) {
if (!radValues[rx].length) {
alert ('Radio Button ' + radNames[rx] + ' is not
selected');
retCode = false;
}
}
for (var tx=0; tx < txtFlds.length; tx++) {
if (!txtFlds[tx].value.length
alert ('Text Field ' + txtFlds[tx].name + ' has no
value');
retCode = false;
}
}
return (retCode);
}
function validatePage(form) {
ResetCounters();
var elems = form.elements;
for (var ix=0; ix < elems.length; ix++) {
var elem = elems[ix];
if (elem.type.match('radio'))
UpdateFieldList(elem);
if (elem.checked) {
UpdateValueList(elem);
}
}
if (elem.type.match('text')) {
txtFlds[txtCnt++] = elem;
}
}
if (CheckForSelection()) {
alert ('OKAY');
}
else {
return false;
}
return (CheckForSelection());
}
</script>
<form name="myForm">
<table>
<tr>
<td align="right">Question 1:</td>
</tr>
<tr>
<td>1 -- <input type="radio" name="rdoQ_1" value="1"></td>
</tr>
<tr>
<td>2 -- <input type="radio" name="rdoQ_1" value="2"></td>
</tr>
<tr>
<td>3 -- <input type="radio" name="rdoQ_1" value="3"></td>
</tr>
<tr>
<td align="right">Question 2:</td>
</tr>
<tr>
<td>1 -- <input type="radio" name="rdoQ_2" value="1"></td>
</tr>
<tr>
<td>2 -- <input type="radio" name="rdoQ_2" value="2"></td>
</tr>
<tr>
<td>3 -- <input type="radio" name="rdoQ_2" value="3"></td>
</tr>
<tr>
<td>4 -- <input type="radio" name="rdoQ_2" value="4"></td>
</tr>
<tr>
<td>5 -- <input type="radio" name="rdoQ_2" value="5"></td>
</tr>
</table>
<input type="text" name="txt1"><br>
<input type="text" name="txt2"><br>
<input type="submit" value="Submit" onClick="return
(validatePage(this.form));
</form>
</body>
</html>
<html>
<head>
<title>Radio Validate Document</title>
</head>
<body>
<script language="javascript">
var radNames = new Array();
var radValues = new Array();
var radCnt = 0;
var txtFlds = new Array();
var txtCnt = 0;
function ResetCounters() {
radCnt =0;
txtCnt =0;
}
function UpdateFieldList (radObj) {
var bFound = false;
for (var rx=0; rx < radCnt; rx++) {
if (radObj.name.match(radName
bFound = true;
break;
}
}
if (!bFound) {
radNames[radCnt] = radObj.name;
radValues[radCnt] = '';
radCnt++;
}
}
function UpdateValueList (radObj) {
for (var rx=0; rx < radNames.length; rx++) {
if (radObj.name.match(radName
radValues[rx] = radObj.value;
break;
}
}
}
function CheckForSelection () {
var retCode = true;
for (var rx=0; rx < radValues.length; rx++) {
if (!radValues[rx].length) {
alert ('Radio Button ' + radNames[rx] + ' is not selected');
retCode = false;
}
}
for (var tx=0; tx < txtFlds.length; tx++) {
if (!txtFlds[tx].value.length
alert ('Text Field ' + txtFlds[tx].name + ' has no value');
retCode = false;
}
}
return (retCode);
}
function validatePage(form) {
ResetCounters();
var elems = form.elements;
for (var ix=0; ix < elems.length; ix++) {
var elem = elems[ix];
if (elem.type.match('radio'))
UpdateFieldList(elem);
if (elem.checked) {
UpdateValueList(elem);
}
}
if (elem.type.match('text')) {
txtFlds[txtCnt++] = elem;
}
}
if (CheckForSelection()) {
alert ('OKAY');
}
else {
return false;
}
return (CheckForSelection());
}
</script>
<form name="myForm">
<table>
<tr>
<td align="right">Question 1:</td>
</tr>
<tr>
<td>1 -- <input type="radio" name="rdoQ_1" value="1"></td>
</tr>
<tr>
<td>2 -- <input type="radio" name="rdoQ_1" value="2"></td>
</tr>
<tr>
<td>3 -- <input type="radio" name="rdoQ_1" value="3"></td>
</tr>
<tr>
<td align="right">Question 2:</td>
</tr>
<tr>
<td>1 -- <input type="radio" name="rdoQ_2" value="1"></td>
</tr>
<tr>
<td>2 -- <input type="radio" name="rdoQ_2" value="2"></td>
</tr>
<tr>
<td>3 -- <input type="radio" name="rdoQ_2" value="3"></td>
</tr>
<tr>
<td>4 -- <input type="radio" name="rdoQ_2" value="4"></td>
</tr>
<tr>
<td>5 -- <input type="radio" name="rdoQ_2" value="5"></td>
</tr>
</table>
<input type="text" name="txt1"><br>
<input type="text" name="txt2"><br>
<input type="submit" value="Submit" onClick="return
(validatePage(this.form));
</form>
</body>
</html>
I am using your code as is except for these lines:
alert ('Radio Button ' + radNames[rx] + ' is not
selected');
and:
alert ('Text Field ' + txtFlds[tx].name + ' has no
value');
Which I changed to:
alert ('Radio Button ' + radNames[rx] + ' is not selected');
And:
alert ('Text Field ' + txtFlds[tx].name + ' has no value');
Take this one
<html>
<head>
<title>Radio Validate Document</title>
</head>
<body>
<script language="javascript">
var radNames = new Array();
var radValues = new Array();
var radCnt = 0;
var txtFlds = new Array();
var txtCnt = 0;
function ResetCounters() {
radCnt =0;
txtCnt =0;
}
function UpdateFieldList (radObj) {
var bFound = false;
for (var rx=0; rx < radCnt; rx++) {
if (radObj.name.match(radName
bFound = true;
break;
}
}
if (!bFound) {
radNames[radCnt] = radObj.name;
radValues[radCnt] = '';
radCnt++;
}
}
function UpdateValueList (radObj) {
for (var rx=0; rx < radNames.length; rx++) {
if (radObj.name.match(radName
radValues[rx] = radObj.value;
break;
}
}
}
function CheckForSelection () {
var retCode = true;
for (var rx=0; rx < radValues.length; rx++) {
if (!radValues[rx].length) {
alert ('Radio Button ' + radNames[rx] + ' is not selected');
retCode = false;
}
}
for (var tx=0; tx < txtFlds.length; tx++) {
if (!txtFlds[tx].value.length
alert ('Text Field ' + txtFlds[tx].name + ' has no value');
retCode = false;
}
}
if (retCode) { alert ('Every thing Okay'); }
return (retCode);
}
function validatePage(form) {
ResetCounters();
var elems = form.elements;
for (var ix=0; ix < elems.length; ix++) {
var elem = elems[ix];
if (elem.type.match('radio'))
UpdateFieldList(elem);
if (elem.checked) {
UpdateValueList(elem);
}
}
if (elem.type.match('text')) {
txtFlds[txtCnt++] = elem;
}
}
return (CheckForSelection());
}
</script>
<form name="myForm">
<table>
<tr>
<td align="right">Question 1:</td>
</tr>
<tr>
<td>1 -- <input type="radio" name="rdoQ_1" value="1"></td>
</tr>
<tr>
<td>2 -- <input type="radio" name="rdoQ_1" value="2"></td>
</tr>
<tr>
<td>3 -- <input type="radio" name="rdoQ_1" value="3"></td>
</tr>
<tr>
<td align="right">Question 2:</td>
</tr>
<tr>
<td>1 -- <input type="radio" name="rdoQ_2" value="1"></td>
</tr>
<tr>
<td>2 -- <input type="radio" name="rdoQ_2" value="2"></td>
</tr>
<tr>
<td>3 -- <input type="radio" name="rdoQ_2" value="3"></td>
</tr>
<tr>
<td>4 -- <input type="radio" name="rdoQ_2" value="4"></td>
</tr>
<tr>
<td>5 -- <input type="radio" name="rdoQ_2" value="5"></td>
</tr>
</table>
<input type="text" name="txt1"><br>
<input type="text" name="txt2"><br>
<input type="submit" value="Submit" onClick="return (validatePage(this.form));
</form>
</body>
</html>
I have few samples for you
http://www.asarconsultants
http://www.asarconsultants
_PA
Business Accounts
Answer for Membership
by: pravinasarPosted on 2006-04-07 at 11:51:23ID: 16403382
Here is a working example... hope this serves your purpose...
s[rx])) {
s[rx])) { { ">
<html>
<head>
<title>Radio Validate Document</title>
</head>
<body>
<script language="javascript">
var radNames = new Array();
var radValues = new Array();
var radCnt = 0;
function UpdateRadioList (radObj) {
var bFound = false;
for (var rx=0; rx < radCnt; rx++) {
if (radObj.name.match(radName
bFound = true;
break;
}
}
if (!bFound) {
radNames[radCnt] = radObj.name;
radValues[radCnt] = '';
radCnt++;
}
}
function UpdateValueList (radObj) {
for (var rx=0; rx < radNames.length; rx++) {
if (radObj.name.match(radName
radValues[rx] = radObj.value;
break;
}
}
}
function CheckForSelection () {
for (var rx=0; rx < radValues.length; rx++) {
if (!radValues[rx].length) {
alert ('Radio Button ' + radNames[rx] + ' is not selected');
return false;
}
}
return true;
}
function validatePage(form) {
var elems = form.elements;
for (var ix=0; ix < elems.length; ix++) {
var elem = elems[ix];
if (elem.type.match('radio'))
UpdateRadioList(elem);
if (elem.checked) {
UpdateValueList(elem);
}
}
if (elem.type.match('text')) {
if (!elem.value.length) {
alert ('Text Field ' + elem.name + ' has no value');
}
}
}
if (CheckForSelection()) {
alert ('OKAY');
}
else {
return false;
}
return (CheckForSelection());
}
</script>
<form name="myForm">
<table>
<tr>
<td align="right">Question 1:</td>
</tr>
<tr>
<td>1 -- <input type="radio" name="rdoQ_1" value="1"></td>
</tr>
<tr>
<td>2 -- <input type="radio" name="rdoQ_1" value="2"></td>
</tr>
<tr>
<td>3 -- <input type="radio" name="rdoQ_1" value="3"></td>
</tr>
<tr>
<td align="right">Question 2:</td>
</tr>
<tr>
<td>1 -- <input type="radio" name="rdoQ_2" value="1"></td>
</tr>
<tr>
<td>2 -- <input type="radio" name="rdoQ_2" value="2"></td>
</tr>
<tr>
<td>3 -- <input type="radio" name="rdoQ_2" value="3"></td>
</tr>
<tr>
<td>4 -- <input type="radio" name="rdoQ_2" value="4"></td>
</tr>
<tr>
<td>5 -- <input type="radio" name="rdoQ_2" value="5"></td>
</tr>
</table>
<input type="text" name="txt1"><br>
<input type="text" name="txt2"><br>
<input type="submit" value="Submit" onclick="return (validatePage(this.form));
</form>
</body>
</html>