JS Dropdown die niet gevalideert wil worden
Ik heb een form met daarin een JS dropdown menu.
Als je een optie uit de dropdown kiest komt er een per optie verschillend invoer veld tevoorschijn.
Ik zou bij het valideren van zo'n invoer veld graag iets zien zoals:
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
36
37
38
39
40
41
42
43
44
45
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
36
37
38
39
40
41
42
43
44
45
<?php
@$d_leeftijd = addslashes($_POST['d_leeftijd']);
@$b_leeftijd = addslashes($_POST['b_leeftijd']);
@$e_leeftijd = addslashes($_POST['e_leeftijd']);
@$p_leeftijd = addslashes($_POST['p_leeftijd']);
@$t_leeftijd = addslashes($_POST['t_leeftijd']);
//************
$tm="t/m";
$jaar="jaar";
$plus="+";
$tot="tot";
//************
if ($d_leeftijd=='AL'){
$leeftijd = ('AL');
}elseif ($d_leeftijd=='"" t/m ""'){
$leeftijd = $b_leeftijd.$tm.$e_leeftijd.$jaar;
}elseif ($d_leeftijd=='""+'){
$leeftijd = $p_leeftijd.$plus;
}elseif ($d_leeftijd=='Tot ""'){
$leeftijd = $tot.$t_leeftijd;
}
echo ($leeftijd);
if ($d_leeftijd=='"" t/m ""')
{
if (strlen($b_leeftijd) and ($e_leeftijd) ==0){
echo("<p align='center'><font face='Arial' size='3' color='#FF0000'>Controleer de door u opgegeven leeftijd.</font></p>");
}
}
if ($d_leeftijd=='""+')
{
if (strlen($p_leeftijd) ==0){
echo("<p align='center'><font face='Arial' size='3' color='#FF0000'>Controleer de door u opgegeven leeftijd.</font></p>");
}
}
if ($d_leeftijd=='Tot ""'){
if (strlen($t_leeftijd) ==0)
{
echo("<p align='center'><font face='Arial' size='3' color='#FF0000'>Controleer de door u opgegeven leeftijd.</font></p>");
}
}
?>
@$d_leeftijd = addslashes($_POST['d_leeftijd']);
@$b_leeftijd = addslashes($_POST['b_leeftijd']);
@$e_leeftijd = addslashes($_POST['e_leeftijd']);
@$p_leeftijd = addslashes($_POST['p_leeftijd']);
@$t_leeftijd = addslashes($_POST['t_leeftijd']);
//************
$tm="t/m";
$jaar="jaar";
$plus="+";
$tot="tot";
//************
if ($d_leeftijd=='AL'){
$leeftijd = ('AL');
}elseif ($d_leeftijd=='"" t/m ""'){
$leeftijd = $b_leeftijd.$tm.$e_leeftijd.$jaar;
}elseif ($d_leeftijd=='""+'){
$leeftijd = $p_leeftijd.$plus;
}elseif ($d_leeftijd=='Tot ""'){
$leeftijd = $tot.$t_leeftijd;
}
echo ($leeftijd);
if ($d_leeftijd=='"" t/m ""')
{
if (strlen($b_leeftijd) and ($e_leeftijd) ==0){
echo("<p align='center'><font face='Arial' size='3' color='#FF0000'>Controleer de door u opgegeven leeftijd.</font></p>");
}
}
if ($d_leeftijd=='""+')
{
if (strlen($p_leeftijd) ==0){
echo("<p align='center'><font face='Arial' size='3' color='#FF0000'>Controleer de door u opgegeven leeftijd.</font></p>");
}
}
if ($d_leeftijd=='Tot ""'){
if (strlen($t_leeftijd) ==0)
{
echo("<p align='center'><font face='Arial' size='3' color='#FF0000'>Controleer de door u opgegeven leeftijd.</font></p>");
}
}
?>
De dropdown ziet er als volgt uit:
<html>
<head>
<script type="text/javascript">
// <![CDATA[
function display(lobj,lid1,lid2,lid3) {
txt = lobj.options[lobj.selectedIndex].value;
document.getElementById(lid1).style.display = 'none';
document.getElementById(lid2).style.display = 'none';
document.getElementById(lid3).style.display = 'none';
if ( txt.match(lid1) ) {
document.getElementById(lid1).style.display = 'block';
}
if ( txt.match(lid2) ) {
document.getElementById(lid2).style.display = 'block';
}
if ( txt.match(lid3) ) {
document.getElementById(lid3).style.display = 'block';
}
}
// ]]>
</script>
</head>
<body>
<h4>Leeftijd:</h4><br />
<table align="right">
<select name="d_leeftijd" id="d_leeftijd" onchange="display(this,'tm','p','tot');">
<option>AL</option>
<option value="tm">"" t/m ""</option>
<option value="p">""+</option>
<option value="tot">Tot ""</option>
</select><br />
<tbody id="tm" style="display: none;">
<tr>
<td class="field"><input type="text" name="b_leeftijd" id="b_leeftijd" size="2" maxlength="2" /><br>t/m<br><input type="text" name="e_leeftijd" id="b_leeftijd" size="2" maxlength="2" /><br>jaar</td>
</tr>
</tbody>
<tbody id="p" style="display: none;">
<tr>
<td class="field"><input type="text" name="p_leeftijd" id="p_leeftijd" size="2" maxlength="2" /> +</td>
</tr>
</tbody>
<tbody id="tot" style="display: none;">
<tr>
<td class="field">Tot<br><input type="text" name="t_leeftijd" id="t_leeftijd" size="2" maxlength="2" /><br>jaar</td>
</tr>
</tbody>
</table>
</body>
</html>
Is er iemand die een oplossing weet?
Alvast bedankt...
Maar wat is nu je echte vraag.
Gerben Jacobs op 14/04/2011 15:31:10:
Maar wat is nu je echte vraag.
Bovenstaand script werkt niet...
Als je voor optie AL in het dropdown menu kiest is de inhoud gewoon ' AL ' en gaat alles goed, maar zodra je de bijvoorbeeld voor optie ' ""+ ' kiest en er een invoer veld verschijnt waar je een leeftijd in moet vullen dan word hij opeens niet meer gevalideert.
hetzelfde geld voor opties ' Tot"" ' en ' ""t/m"" ' in het dropdown menu.
Hoe kan ik het script laten laten weten welke keuze er in het dropdown menu is gemaakt en alleen de daarbij horende invoer velden laten valideren...
Als je het name="" attribuut van je input-velden op deze manier een naam geeft: "data[t_leeftijd]" dan krijg je na submission een array genaamd $_POST["data"], hier kan je dan door heen loopen en kijken welke velden ingevuld zijn.
Gerben Jacobs op 14/04/2011 16:42:00:
Als je het name="" attribuut van je input-velden op deze manier een naam geeft: "data[t_leeftijd]" dan krijg je na submission een array genaamd $_POST["data"], hier kan je dan door heen loopen en kijken welke velden ingevuld zijn.
Ik krijg alle POST data gewoon binnen in het script en ik kan het met een echo ook weergeven...
Alleen hoe kan ik nou zeggen dat als de value van de dropdown bijvoorbeeld ' ""+ ' is, hij alleen de het invoer veld wat daar bij hoort valideert?
Is het misschien ook mogelijk om een klein voorbeeld script te posten, dan heb ik iets om te beginnen...
Alvast bedankt.
Gewijzigd op 15/04/2011 09:06:28 door Michel Meinema
Gewijzigd op 18/04/2011 12:00:19 door Michel Meinema
Heb me ook al helemaal kapot gegoogled, maar zonder resultaat...
Wat is ('""+ ')? Wat wil je valideren? Een veld met JS? Of een waarde met PHP?
Plaats anders ook een voorbeeld URL waar we kunnen kijken wat jij bedoelt.
Gerben Jacobs op 18/04/2011 15:48:56:
Aangezien niemand reageert, denk ik dat ik voor velen spreek als ik zeg, dat je vraag nog steeds heel onduidelijk is.
Wat is ('""+ ')? Wat wil je valideren? Een veld met JS? Of een waarde met PHP?
Plaats anders ook een voorbeeld URL waar we kunnen kijken wat jij bedoelt.
Wat is ('""+ ')? Wat wil je valideren? Een veld met JS? Of een waarde met PHP?
Plaats anders ook een voorbeeld URL waar we kunnen kijken wat jij bedoelt.
Klopt. Topics waar weinig moeite ingestoken is, stoppen wij ook geen moeite in :-)