Meerdere show/hide functions onload

Status
Niet open voor verdere reacties.

eldik031

Nieuwe gebruiker
Lid geworden
10 sep 2009
Berichten
3
Hallo allemaal,

Ik heb een vraag over een stuk javascript. Ik ben al tijden aan het zoeken naar een oplossing en al vele dingen geprobeerd maar het werkt maar niet. Mijn Javascript kennis is beperkt.

Het doel van de code is dat een vraag uit mijn formulier beantwoord kan worden met radio buttons, maar dat er bij de laatste radio button van de vraag een textbox verschijnt zodra er op geklikt wordt.

Mijn formulier is opgebouwd uit 2 paginas welke binnen hetzelfde .php document zijn geprogrammeerd. Binnen het .php document wordt dus intern doorverwezen.
Op de eerste pagina kan je intresses aanvinken, bijvoorbeeld auto en fiets.

Op de tweede pagina wordt vervolgens gekeken welke intresses je hebt aangevinkt om zo de rubrieken te tonen. In dit voorbeeld krijg je dus een rubriek auto en fiets.
Op de 2de pagina is het de bedoeling dat de rubrieken worden ingevuld.

Nu wil ik bij zowel rubriek auto als bij rubriek fiets een vraag laten beantwoorden met radiobuttons waarbij de laatste optie van iedere vraag een textbox bevat.

Mijn 2 vragen in het formulier zien er als volgt uit:
Code:
<div>
<label><input type="radio" name="autokleur" value="geel" <? echo $check1?> >geel</label>
<label><input type="radio" name="autokleur" value="groen" <? echo $check2?> >groen</label>
<label><input type="radio" name="autokleur" value="Anders" <? echo $check3?> >Anders, namelijk</label>
<div id="Anders">
<input class="textbox" maxlength="20" size="35" name="autokleur2" type="text" value="<?php echo $_POST['autokleur2']; ?>">
</div>
</div>

<div>
<label><input type="radio" name="fietskleur" value="geel" <? echo $check4?> >Nee</label>
<label><input type="radio" name="fietskleur" value="anders2" <? echo $check5?> >anders</label>
<div id="anders2">
<input class="textbox" maxlength="20" size="35" name="fietskleur2" type="text" value="<?php echo $_POST['fietskleur2']; ?>">
</div>
</div>

Hierbij mijn javascript:
Code:
function hidethis1() {
hide();
var group=document.getElementsByName('autokleur');
for(var i=0; i<group.length; i++) {
group[i].onclick=function hidethis1() {
	toggle(this.value);};
}
}
				
function hide() {
if(document.gegevens.autokleur[2].checked){
	document.getElementById('Anders').style.display = '';
} else {
	document.getElementById('Anders').style.display = 'none';
}
}

function toggle(objID) {
hide();
if(objID!='groen') {
document.getElementById(objID).style.display='';
}
}
				
function hidethis2() {
hides();
var groupa=document.getElementsByName('fietskleur');
for(var s=0; s<groupa.length; s++) {
groupa[s].onclick=function hidethis2() {
toggles(this.value);};
}
}
				
function hides() {
if(document.gegevens.fietskleur[1].checked){
	document.getElementById('anders2').style.display = '';
} else {
	document.getElementById('anders2').style.display = 'none';
}
}

function toggles(objID) {
hides();
if(objID!='geel') {
document.getElementById(objID).style.display='';
}
}	
			 
window.onload= function {
hidethis();
hidethis2();
}

Als ik beide rubrieken aanvink op pagina 1 doen alle 2 de vragen het goed. Als ik maar 1 rubriek aanvink op pagina 1 dan werkt alleen degene welke als eerste opgevraagt wordt tijdens window.onload. Zodra ik de window.onload omdraai werkt de andere vraag weer niet. Beetje veel tekst maar ik hoop dat het duidelijk is zo. Alvast bedankt voor eventuele reacties.
 
Hai,

Ik weet niet zeker of ik 100% begrijp wat je bedoelt, maar volgens mij wil je gewoon simpelweg dat die hide en show goed werken.

PHP:
<script type="text/javascript">
function showhide(box, opensluit){
	if(opensluit == 1){
	document.getElementById(box).style.display = 'block';
	}if(opensluit == 0){
	document.getElementById(box).style.display = 'none';	
	}
}

</script>
<div  >
	<label><input type="radio" onClick="showhide('box1', 0);" name="autokleur" value="geel">geel</label>
	<label><input type="radio" onClick="showhide('box1', 0);" name="autokleur" value="groen">groen</label>
	<label><input type="radio" onClick="showhide('box1', 1);" name="autokleur" value="Anders">Anders, namelijk</label>
	<div id="Anders">
		<input id="box1" style="display:none;" class="textbox" maxlength="20" size="35" name="autokleur2" type="text" value="">
	</div>
</div>

<div>
	<label><input type="radio"  onClick="showhide('box2', 0);" name="fietskleur" value="geel">Nee</label>
	<label><input type="radio"   onClick="showhide('box2', 1);" name="fietskleur" value="anders2">anders</label>
	<div id="anders2">
		<input id="box2" style="display:none;" class="textbox" maxlength="20" size="35" name="fietskleur2" type="text" value="">
	</div>
</div>

als het niet is wat je wilt dan hoor ik het wel :-)
 
Oke, dat is inderdaad waar ik naar opzoek was, maar ik ben er nog niet helemaal.
Ik heb de code wat aangepast maar hij mist nog iets. Ik heb het idee dat ik dat met php moet regelen maar zal het voorlopig nog hier posten.

Dit is de aangepaste code:
Code:
<tr>
<td width="300" valign="top" >&nbsp;&nbsp;Welke kleur heeft uw auto? :</td>
<td width="300" style="border-right:inset #65B601">

<?
if (isset($_POST['fietskleur']) && $_POST['fietskleur'] == 'geel') { 
# -> voorkomen dat je een undefined index krijgt
		$fietskleur1 = "checked";
		}
		else{
		$fietskleur1="";}
							
if (isset($_POST['fietskleur']) && $_POST['fietskleur'] == 'anders2') { 
# -> voorkomen dat je een undefined index krijgt
		$fietskleur2 = "checked";
		}
		else{
		$fietskleur="";}
							
if (isset($_POST['fietskleur']) && $_POST['fietskleur'] == 'anders2') { 
# -> voorkomen dat je een undefined index krijgt
		}
		else{
		$_POST['fietskleur2']="";}
							
?>		
		
<div>
<label><input type="radio"  onClick="showhide('box2', 0);" name="fietskleur" value="geel" <? echo $fietskleur1?>>Nee</label>
<label><input type="radio"   onClick="showhide('box2', 1);" name="fietskleur" value="anders2" <? echo $fietskleur2?>>anders</label>
         <div id="anders2">
         <input id="box2" style="display:none;" class="textbox" maxlength="20" size="35" name="fietskleur2" type="text" value="<?php echo $_POST['fietskleur2']; ?>">
          </div>
</div>
				
</td>
</tr>

Het stukje php boven de divs kijkt welke radio aangevinkt was bij het vorige bezoek aan pagina 2. Op pagina 2 zit een terug knop waarmee alle ingevulde velden van pagina 2 meeverzonden worden naar pagina 1 d.m.v. $_POST. Zo kan je op pagina 1 bijvoorbeeld nog een intresse aanvinken welke je eerst vergeten was. Klik je dan op pagina 1 naar pagina 2 dan worden alle velden weer ingevuld d.m.v. $_POST.
Oftewel, ik wil dat de radio input onthouden wordt. Dat werkt, alleen als box2 al is ingevuld dan verbergt hij deze toch zodra de pagina geladen wordt.
Is er een mogelijkheid box2 te beoordelen of deze al is ingevuld?
 
Laatst bewerkt:
Met jou stuk code ben ik eruit gekomen. Doormiddel van een stukje extra php werkt het nu super. Als laatste controleer ik door een if statement of het textvak al gevuld is.

Code:
<tr>
<td width="300" valign="top" >&nbsp;&nbsp;Welke kleur heeft uw auto? :</td>
<td width="300" style="border-right:inset #65B601">

<?
if (isset($_POST['fietskleur']) && $_POST['fietskleur'] == 'geel') { 
# -> voorkomen dat je een undefined index krijgt
		$fietskleur1 = "checked";
		}
		else{
		$fietskleur1="";}
							
if (isset($_POST['fietskleur']) && $_POST['fietskleur'] == 'anders2') { 
# -> voorkomen dat je een undefined index krijgt
		$fietskleur2 = "checked";
		}
		else{
		$fietskleur="";}
							
if (isset($_POST['fietskleur']) && $_POST['fietskleur'] == 'anders2') { 
# -> voorkomen dat je een undefined index krijgt
		}
		else{
		$_POST['fietskleur2']="";}
							
?>		
		
<div>
<label><input type="radio"  onClick="showhide('box2', 0);" name="fietskleur" value="geel" <? echo $fietskleur1?>>Nee</label>
<label><input type="radio"   onClick="showhide('box2', 1);" name="fietskleur" value="anders2" <? echo $fietskleur2?>>anders</label>
         
if (($fietskleur2 == "checked") and ($_POST['fietskleur2'] != "")){
          <div id="anders2">
         <input id="box2" style="display:block;" class="textbox" maxlength="20" size="35" name="fietskleur2" type="text" value="<?php echo $_POST['fietskleur2']; ?>">
          </div>
          </div>
<?}
else {
?>
          <div id="anders2">
         <input id="box2" style="display:none;" class="textbox" maxlength="20" size="35" name="fietskleur2" type="text" value="<?php echo $_POST['fietskleur2']; ?>">
          </div>
          </div>
<?}
		
</td>
</tr>
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan