Toon posts:

[JS] Drop down afhankelijk van andere dropdown met DB waarde

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb 2 dropdown's A en B

A wordt bij laden pagina gevuld met waardes uit een database tabel.
B is bij laden leeg.

Ik wil nu een functie schijven die drop down B vult afhankelijk van de waarde van dropdown A.

Wat ik zou denk is dat er in een script verschillende array's gevuld worden met de naam van de waardes in A, en met de waardes die mogelijk zijn in B.

In de onchange van A wordt dan de functie aangeroepen die de waardes in B vult met de waardes van Array naam, die de value van A heeft.


Iemand een ID hoe je dat kan maken?

Verwijderd

Ja, maar wij gaan je niet helpen voor je zelf iets probeert. Bovendien worden dit soort dingen al heel veel gebruikt in bijvoorbeeld 2e-hands autosites. Probeer daar eens te kijken hoe ze het doen.

Het principe wat je beschrijft is goed. Probeer dat eens te implementeren. Zoek maar eens naar new Option op dit forum.

Verwijderd

Topicstarter
Heb het al geprobeerd:

Deze werkt, als je de ArrayName zelf invuld in de functie (dat wil ik niet)
code:
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
<HTML>
<script>
A =new Array("1","2","3","4","5")

function Change2To(){
  ArrayName = A;
  document.address.fordepot.length=0
  for(i=0;i<ArrayName.length;i++){
    document.address.fordepot.length++
    document.address.fordepot.options[i].text=ArrayName[i]
    document.address.fordepot.options[i].value=ArrayName[i]}}
</script>
<body>
<form name="address">

<select name="address" onchange="Change2To()">
  <option value="">--------</option>
  <option value="A">A</option>
</select>
<select name="fordepot">
  <option>________</option>
</select>

</form>
</body>
</HTML>


Dit werkt niet
code:
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
<HTML>
<script>
A =new Array("1","2","3","4","5")
B =new Array("6","7","8","9","0")

function Change2To(ArrayName){
  document.address.fordepot.length=0
  for(i=0;i<ArrayName.length;i++){
    document.address.fordepot.length++
    document.address.fordepot.options[i].text=ArrayName[i]
    document.address.fordepot.options[i].value=ArrayName[i]}}
</script>
<body>
<form name="address">

<select name="address" onchange="Change2To([this.value])">
  <option value="">--------</option>
  <option value="A">A</option>
  <option value="B">B</option>
</select>
<select name="fordepot">
  <option>________</option>
</select>

</form>
</body>
</HTML>


Dan krijg ik in drop down fordepot A of B te staan

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

Change2To([this.value])

Was dat voor javascript :?

Heb je al eens gewoon geprobeerd met een alert() ofzo de value op te vragen...? Dat noemen we nou 'debuggen' en 'programmeren' :)

  • André
  • Registratie: Maart 2002
  • Laatst online: 28-08 14:49

André

Analytics dude

JavaScript:
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
<html>
<head>
  <script language="javascript">
    A =new Array("1","2","3","4","5")
    B =new Array("6","7","8","9","0")

    function Change2To(ArrayName)
    {
      document.address.fordepot.length=0
      for(i = 0; i < ArrayName.length; i++)
      {
        document.address.fordepot.length++
        document.address.fordepot.options[i].text = eval(ArrayName)[i]
        document.address.fordepot.options[i].value = eval(ArrayName)[i]
      }
    }
  </script>
</head>
<body>
  <form name="address">
    <select name="adres" onchange="Change2To(this.value)">
      <option value="">--------</option>
      <option value="A">A</option>
      <option value="B">B</option>
    </select>
    <select name="fordepot">
      <option>--------</option>
    </select>
  </form>
</body>
</html>

Dit werkt wel, je had 2 keer address gebruikt (form en select).
Change2To([this.value]) heb ik veranderd naar Change2To(this.value)
En in de js 2 evals toegevoegd.

:7

[ Voor 0% gewijzigd door André op 15-11-2002 12:49 . Reden: indenting ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 18:18

crisp

Devver

Pixelated

Als je je arrays nou zo definieerd:
JavaScript:
1
2
3
var multiArray = new Array();
multiArray['A'] = new Array("1","2","3","4","5");
multiArray['B'] = new Array("6","7","8","9","0");

kan je het ook zonder evals doen:
JavaScript:
1
2
3
4
5
6
for(i = 0; i < multiArray[ArrayName].length; i++)
{
  document.address.fordepot.length++
  document.address.fordepot.options[i].text = multiArray[ArrayName][i];
  document.address.fordepot.options[i].value = multiArray[ArrayName][i];
}

:)

Intentionally left blank


  • André
  • Registratie: Maart 2002
  • Laatst online: 28-08 14:49

André

Analytics dude

Dat is natuurlijk de beste oplossing want eval is gewoon een vies tijdvretend commando dat alleen gebruikt word in slechte code.

Alleen ik kwam even niet op het idee van 2D arrays.
Pagina: 1