2 methoden inkorten tot 1 methode
Ik heb 2 methoden die ik graag zou inkorten tot 1 methode aangezien ik het grotendeels overbodig vind. Nu weet ik alleen niet hoe ik het kan doen, zonder dat de functionaliteit te slopen.
Het gaat om het volgende:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
function toggle(onoff)
{
var e = document.getElementById('proprty_end_date');
if(!onoff)
{
e.style.display = 'none';
property_end_date_label.style.display="none";
}
else
{
e.style.display = 'block';
property_end_date_label.style.display="block";
}
}
function toggle2(onoff)
{
var e = document.getElementById('proprty_viewing_date');
if(!onoff)
{
e.style.display = 'none';
proprty_viewing_date_label.style.display="none";
}
else
{
e.style.display = 'block';
proprty_viewing_date_label.style.display="block";
}
}
[/CODE]
{
var e = document.getElementById('proprty_end_date');
if(!onoff)
{
e.style.display = 'none';
property_end_date_label.style.display="none";
}
else
{
e.style.display = 'block';
property_end_date_label.style.display="block";
}
}
function toggle2(onoff)
{
var e = document.getElementById('proprty_viewing_date');
if(!onoff)
{
e.style.display = 'none';
proprty_viewing_date_label.style.display="none";
}
else
{
e.style.display = 'block';
proprty_viewing_date_label.style.display="block";
}
}
[/CODE]
ook hier kan je jquery voor gebruiken.
@topicstarter:
hint: geef de waardes die verschillen mee als parameters aan de functie
Ja daar dacht ik ook aan maar de "proprty_viewing_date_label" kan ik moeilijk in een variabele zetten denk ik. Aangezien dat een ID van een label is.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function toggle(onoff,elementid)
{
var e = document.getElementById(elementid);
var label = window[elementid+'_label'];
if(!onoff)
{
e.style.display = 'none';
label.style.display="none";
}
else
{
e.style.display = 'block';
label.style.display="block";
}
}
<a href="#" onclick="toggle(false,'test1');">Hide</a><a href="#" onclick="toggle(true,'test1');">Show</a>
<span id="test1_label">label</span>
<div id="test1">test</div>
{
var e = document.getElementById(elementid);
var label = window[elementid+'_label'];
if(!onoff)
{
e.style.display = 'none';
label.style.display="none";
}
else
{
e.style.display = 'block';
label.style.display="block";
}
}
<a href="#" onclick="toggle(false,'test1');">Hide</a><a href="#" onclick="toggle(true,'test1');">Show</a>
<span id="test1_label">label</span>
<div id="test1">test</div>
Zo werkt ie. Heb het getest.
Gewijzigd op 21/03/2012 21:43:09 door Nick Dijkstra
bij mij werkt het zo niet :S
Laat eens je code zien dan.
Nick Dijkstra op 21/03/2012 23:09:04:
Laat eens je code zien dan.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Dit is de radiobutton field die het veld proprty_end_date moet regelen (hide/show):
div class="form_row clearfix">
<label><?php _e(RENTAL_PERIOD_TEXT);?> <span>*</span> </label>
<span class="fl user_define"> <input name="proprty_rental_period" onClick='toggle(0,'proprty_end_date')' type="radio" <?php if($proprty_rental_period=='Indefinite Period' || $proprty_rental_period == null){echo 'checked="checked"';}?> value="Indefinite Period" /> <?php _e(PERIOD_INDEFINITE_TEXT);?></span>
<span class="fl user_define"> <input name="proprty_rental_period" onClick='toggle(1,'proprty_end_date')' type="radio" <?php if($proprty_rental_period=='Temporary'){echo 'checked="checked"';}?> value="Temporary" /> <?php _e(PERIOD_TEMPORARY_TEXT);?> </span>
</div>
Dit is de radiobutton field die het veld+label proprty_viewing_date moet regelen (hide/show):
<div class="form_row clearfix">
<label><?php _e(VIEWING_TEXT);?> <span>*</span> </label>
<span class="fl user_define"> <input name="proprty_viewing" onClick='toggle(0,'proprty_viewing_date')' type="radio" <?php if($proprty_viewing=='Yes'){echo 'checked="checked"';}?> value="Yes" /> <?php _e('Yes');?> </span>
<span class="fl user_define"> <input name="proprty_viewing" onClick='toggle(1,'proprty_viewing_date')' type="radio" <?php if($proprty_viewing=='No' || $proprty_viewing =='' ){echo 'checked="checked"';}?> value="No" /> <?php _e('No');?></span>
</div>
[size=xsmall][i]Toevoeging op 21/03/2012 23:26:51:[/i][/size]
En dit zijn de velden die dus worden gehide en geshowt:
<div class="form_row clearfix">
<label id="property_end_date_label" style='display:none;'><?php _e(RENTAL_AVAILABLE_END_TEXT);?> <span>*</span> </label>
<input type="text" name="proprty_end_date" id="proprty_end_date" class="textfield" style='display:none;'value="<?php echo esc_attr(stripslashes($proprty_end_date)); ?>" />
</div>
<div class="form_row clearfix">
<label id="proprty_viewing_date_label" style='display:none;'><?php _e(VIEWING_DATE_TEXT);?> <span>*</span> </label>
<input type="text" name="proprty_viewing_date" id="proprty_viewing_date" class="textfield" style='display:none;'value="<?php echo esc_attr(stripslashes($property_viewing_date)); ?>" />
</div>
div class="form_row clearfix">
<label><?php _e(RENTAL_PERIOD_TEXT);?> <span>*</span> </label>
<span class="fl user_define"> <input name="proprty_rental_period" onClick='toggle(0,'proprty_end_date')' type="radio" <?php if($proprty_rental_period=='Indefinite Period' || $proprty_rental_period == null){echo 'checked="checked"';}?> value="Indefinite Period" /> <?php _e(PERIOD_INDEFINITE_TEXT);?></span>
<span class="fl user_define"> <input name="proprty_rental_period" onClick='toggle(1,'proprty_end_date')' type="radio" <?php if($proprty_rental_period=='Temporary'){echo 'checked="checked"';}?> value="Temporary" /> <?php _e(PERIOD_TEMPORARY_TEXT);?> </span>
</div>
Dit is de radiobutton field die het veld+label proprty_viewing_date moet regelen (hide/show):
<div class="form_row clearfix">
<label><?php _e(VIEWING_TEXT);?> <span>*</span> </label>
<span class="fl user_define"> <input name="proprty_viewing" onClick='toggle(0,'proprty_viewing_date')' type="radio" <?php if($proprty_viewing=='Yes'){echo 'checked="checked"';}?> value="Yes" /> <?php _e('Yes');?> </span>
<span class="fl user_define"> <input name="proprty_viewing" onClick='toggle(1,'proprty_viewing_date')' type="radio" <?php if($proprty_viewing=='No' || $proprty_viewing =='' ){echo 'checked="checked"';}?> value="No" /> <?php _e('No');?></span>
</div>
[size=xsmall][i]Toevoeging op 21/03/2012 23:26:51:[/i][/size]
En dit zijn de velden die dus worden gehide en geshowt:
<div class="form_row clearfix">
<label id="property_end_date_label" style='display:none;'><?php _e(RENTAL_AVAILABLE_END_TEXT);?> <span>*</span> </label>
<input type="text" name="proprty_end_date" id="proprty_end_date" class="textfield" style='display:none;'value="<?php echo esc_attr(stripslashes($proprty_end_date)); ?>" />
</div>
<div class="form_row clearfix">
<label id="proprty_viewing_date_label" style='display:none;'><?php _e(VIEWING_DATE_TEXT);?> <span>*</span> </label>
<input type="text" name="proprty_viewing_date" id="proprty_viewing_date" class="textfield" style='display:none;'value="<?php echo esc_attr(stripslashes($property_viewing_date)); ?>" />
</div>
probeer eens dit: onClick="toggle(false,'proprty_viewing_date')"
dus dubbele quotes en 0 = false en 1 = true
Het werkt nu wel, maar op een of andere manier wordt de label van property_end_date_label niet weergeven :S
Laat je JS code eens zien
{
var e = document.getElementById(elementid);
var label = window[elementid+'_label'];
if(!onoff)
{
e.style.display = "none";
label.style.display="none";
}
else
{
e.style.display = "block";
label.style.display="block";
}
}
<label id="proprty_viewing_date_label"
vergelijk deze eens
Ik had property_end_date_label maar het moest zijn proprty_end_date_label.
Erg bedankt voor je hulp! Echt geniaal zijn jullie!
Mvg,
Engin
Toevoeging op 22/03/2012 14:14:47:
Nu zat ik op school(firefox) de pagina te bekijken en zag ik dat de labels niet verschijnen wanneer ik op de radio button druk terwijl het in google chrome wel werkt. Ik zou dit graag willen oplossen, enig idee waar het aan kan liggen?
Mvg,
Engin