Page 1 of 1

[solved] Javascript - set all yes, set all no, unset all

Posted: Mon May 17, 2004 4:16 pm
by markl999
Hi,

If i have 6 radio buttons, like

Code: Select all

<input type="radio" name="answer1" value="yes">Yes
<input type="radio" name="answer1" value="no">No
<br />
<input type="radio" name="answer2" value="yes">Yes
<input type="radio" name="answer2" value="no">No
..etc...etc..
..where it goes up to answer6, what Javascript could i use to have 'set all yes', 'set all no', 'unset all' buttons/links/whatever ?
Google isn't being too forthcoming with an answer :o

Posted: Mon May 17, 2004 5:54 pm
by feyd

Code: Select all

<html>
<head>
<script language="Javascript">
// pass true, false, or nothing.
function setAnswers(yesno)
{
	var obj, ans = 1, opt;
	var frm = document.forms['form_name_or_num_here'];
	if(frm)
	{
		var buf = "";

		if(arguments.length == 0)
		{
			// unset all
			while(obj = eval("frm.answer" + ans++))
			{
				for(opt = 0; opt < obj.length; opt++)
				{
					buf += obj.name + "[" + opt + "] = " + (obj[opt].checked?"true":"false") + "\n";
					obj[opt].checked = false;
				}
			}
		}
		else if(yesno)
		{
			// set all to yes
			while(obj = frm['answer' + ans++])
			{
				for(opt = 0; opt < obj.length; opt++)
				{
					buf += obj.name + "[" + opt + "] = " + (obj[opt].checked?"true":"false") + "\n";
					if(obj[opt].value == 'yes')
						obj[opt].checked = true;
					else
						obj[opt].checked = false;
				}
			}
		}
		else
		{
			// set all to no
			while(obj = frm['answer' + ans++])
			{
				for(opt = 0; opt < obj.length; opt++)
				{
					buf += obj.name + "[" + opt + "] = " + (obj[opt].checked?"true":"false") + "\n";
					if(obj[opt].value == 'no')
						obj[opt].checked = true;
					else
						obj[opt].checked = false;
				}
			}
		}
		
		if(buf != "")
			alert(buf);
		else
			alert("no data");
	}
	else
		alert('no!');
}
</script>

</head>
<body>
	<div align=center>
	<a href="javascript:setAnswers()">unset all</a><br />
	<a href="javascript:setAnswers(true)">set all yes</a><br />
	<a href="javascript:setAnswers(false)">set all no</a><br />
	<form name="form_name_or_num_here">
		<input type=radio name="answer1" value="yes" checked/>yes<br />
		<input type=radio name="answer1" value="no" />no<br />
		<input type=radio name="answer2" value="yes" />yes<br />
		<input type=radio name="answer2" value="no" checked/>no<br />
		<input type=radio name="answer3" value="yes" />yes<br />
		<input type=radio name="answer3" value="no" />no<br />
		<input type=radio name="answer4" value="yes" />yes<br />
		<input type=radio name="answer4" value="no" checked/>no<br />
		<input type=radio name="answer5" value="yes" />yes<br />
		<input type=radio name="answer5" value="no" />no<br />
		<input type=radio name="answer6" value="yes" />yes<br />
		<input type=radio name="answer6" value="no" />no<br />
	</form>
	</div>
</body>
</html>

Posted: Mon May 17, 2004 5:57 pm
by markl999
Works a treat.
Thanks.