# Auswahlliste eins, soll Werte der zweiten Auswahlliste ändern



## LiebHabSchafi (22. September 2005)

Hallo,

ich habe mal ne Frage, wie kann ich folgendes Problem am besten lösen habe nämlich nix vergleichbares gefunden  oder nur nach dem falschen gesucht ...

okay also es folgendes machen :

es gibts 2 auswahllisten.
Wähle ich in der ersten auswahlliste "Deutschland" aus, sollen in der zweiten alle Bundesländer von Deutschland angezeigt werden.

Wähle ich im ersten "Schweiz" aus, dann sollen alle Kantonen der Schweiz angezeigt werden. 

Ich hoffe es kann jemand was mit meiner mageren Beschreibung anfangen, wenn nicht dann einfach nochmal nachfragen dann mach ich nen Bild 

schonmal vielen Dank vorraus.


----------



## Quaese (23. September 2005)

Hi,

du könntest ein zweidimensionales Array (*arrParts*) erstellen:

 Die erste Dimension entspricht dem Index des Landes in der ersten Select-Gruppe (Deutschland = 1, 
Schweiz = 2)
 Die zweite Dimension ist ebenfalls ein Array, das alle Bundesländer bzw. Kantone enthält.
Wird im ersten Selectfeld ein Land ausgewählt, wird die zweite Gruppe eingeblendet. Die bestehende
Liste wird gelöscht und mit Hilfe des Arrays werden die zum Land gehörigen Teile mit *new Option* 
erstellt und eingebunden.
Wird kein Land ausgewählt, so wird die zweite Selectgruppe ausgeblendet.


```
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
  <!--
 //-->
</style>
<script type="text/javascript">
  <!--
  var arrParts = new Array();
  arrParts[1] = new Array("BL1", "BL2");
  arrParts[2] = new Array("Kanton1", "Kanton2");

  function updateSelect(objSel){
    // Objekt für zweite Select-Gruppe
    objSelNew = document.getElementById("selParts");
    // Optionen löschen
    objSelNew.length = 0;

    // Falls kein Land gewählt wurde
    if(objSel.selectedIndex == 0){
      objSelNew.style.display = "none";
    }else{
      objSelNew.style.display = "inline";

      // Alle BL/Kantone durchlaufen
      for(i=0; i<arrParts[objSel.selectedIndex].length; i++){
        // Neue Option erstellen
        objOpt = new Option(arrParts[objSel.selectedIndex][i], arrParts[objSel.selectedIndex][i], false, false);
        // Neue Option in Select-Struktur einhängen (immer an letzte Stelle)
        objSelNew.options[objSelNew.length] = objOpt;
      }
    }
  }
 //-->
</script>
</head>

<body>
<form action="" method="post">
  <select onchange="updateSelect(this);">
    <option value="default">- bitte auswählen -</option>
    <option value="deutschland">Deutschland</option>
    <option value="schweiz">Schweiz</option>
  </select>
  <select id="selParts" style="display: none;">
    <option value=""></option>
  </select>
</form>
</body>
</html>
```
Damit das Ganze funktioniert, müssen die Länder im ersten Selectfeld mit der zweiten Option
beginnen. Weiterhin muss die zweite Selectgruppe die ID *selParts* haben.

Ich hoffe, dich richtig verstanden zu haben.

Ciao
Quaese


----------



## LiebHabSchafi (23. September 2005)

danke funktioniert wunderbar  großes lob und nochmal danke


----------



## LiebHabSchafi (24. September 2005)

Hallo,

noch eine frage  wenn ich einen wert aus der 2. auswahlliste auswähle, dann auf abschicken klicke "er mir mitteilt das ich irgendwo noch eine falsch eingabe habe (z. B. name fehlt) setzt er die 2. auswahlliste auf 0 zurück, wie kann ich es so machen das der vorher ausgewählte bereich aktiv bleibt ?

nochmals vielen dank vorraus und ein schönes Wochenende


----------

