2 Dropdowns mit javascipt befüllt,seite öffnen sich selber wieder,jedoch fehler dabei

mrbong

Mitglied
Hallo, bin durch google auf das tolle forum hier gestossen, hätte da ein problem,
sitz jetzt schon sehr lange dabei, komme einfach nicht drauf. :(


Es geht darum um zwei dropdown boxen, die auf einer seite sind, die sich selbst wieder aufruft.
der erste dropdown füllt sich ja wieder, mit dem ausgewähltem.

Jedoch der zweite dropdown füllt sich nimmer,deshalb auch nicht das ausgewählte.

Habe jetzt schon alles versucht von onload, eigene form usw, leider nix.

Hier mein letzter stand der ding :


Array,Javascriptcode :

Code:
<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
var_bundesland = new Array(
new Array(
new Array("Bad Aussee",1),
new Array("Bruck/Mur",2),
new Array("Deutschlandsberg",3),
new Array("Feldbach",4),
...
...
...
function fillSelectFromArray(selectCtrl, itemArray, goodPrompt, badPrompt, defaultItem) {
var i, j;
var prompt;
// empty existing items
for (i = selectCtrl.options.length; i >= 0; i--) {
selectCtrl.options[i] = null; 
}
prompt = (itemArray != null) ? goodPrompt : badPrompt;
if (prompt == null) {
j = 0;
}
else {
selectCtrl.options[0] = new Option(prompt);
j = 1;
}
if (itemArray != null) {
// add new items
for (i = 0; i < itemArray.length; i++) {
selectCtrl.options[j] = new Option(itemArray[i][0]);
if (itemArray[i][1] != null) {
selectCtrl.options[j].value = itemArray[i][1]; 
}
j++;
}
// select first item (prompt) for sub list
selectCtrl.options[0].selected = true;
   }
}
//  End -->
</script>

Hier der Code :

Code:
<form name = "auswohl" action="search22.php" method="get" > 
	<input type="hidden" name="sent" value="yes">
	<input type="hidden" name="id" value="<?php echo $id; ?>">
	<input type="hidden" name="search" value="<?php echo $search; ?>">
   
	  <div align="right">Bitte wählen Sie,um zu Sortieren :
<SELECT NAME="Make" onchange="fillSelectFromArray(this.form.Var_bundesland, ((this.selectedIndex == -1) ? null : var_bundesland[this.selectedIndex-1]));">
   <option value="-1"<?= ($_GET["Make"] == "-1") ? " selected" : "" ?>>Alle anzeigen</option> 
   <option value="1"<?= ($_GET["Make"] == "1") ? " selected" : "" ?>>Steiermark</option>
   <option value="2"<?= ($_GET["Make"] == "2") ? " selected" : "" ?>>Tirol</option> 
   <option value="3"<?= ($_GET["Make"] == "3") ? " selected" : "" ?>>Vorarlberg</option> 
   <option value="4"<?= ($_GET["Make"] == "4") ? " selected" : "" ?>>Salzburg</option> 
   <option value="5"<?= ($_GET["Make"] == "5") ? " selected" : "" ?>>Oberösterreich</option> 
   <option value="6"<?= ($_GET["Make"] == "6") ? " selected" : "" ?>>Niederösterreich</option> 
   <option value="7"<?= ($_GET["Make"] == "7") ? " selected" : "" ?>>Kärnten</option> 
   <option value="8"<?= ($_GET["Make"] == "8") ? " selected" : "" ?>>Burgenland</option> 
   <option value="9"<?= ($_GET["Make"] == "9") ? " selected" : "" ?>>Wien</option>
</SELECT>
   
    &nbsp;</div></th>
    <th width="441" bgcolor="#C0C0C0" scope="col"><div align="left">
<SELECT NAME="Var_bundesland" onload="fillSelectFromArray(this.form.Var_bundesland, ((this.form.Make) ? null : var_bundesland[this.form.Make]));">
          <OPTION>--------------</OPTION>
          <OPTION> </OPTION>
          <OPTION> </OPTION>
          <OPTION> </OPTION>
          <OPTION> </OPTION>
      </SELECT>

<input type="submit" value="Weiter" name="B1">

hier zu begutachten : http://www.bauexpert.at

Vielen dank im vorraus, für eure hilfe

Gruss Mr.Bong
 
Zuletzt bearbeitet:
Zum Einen... der Aufruf erfolgt zu früh...du musst ihn hinter der Liste "Var_bundesland" platzieren...damit diese Liste zum Zeitpunkt des Funktionsaufrufes auch bekannt ist.

Zum Anderen...beim Ansprechen der Formularelemente gehst du ähnlich korrekt zu Werke wie beim Erstellen deines Beitrages(versuche bitte, hier und da auch innerhalb von Sätzen eine korrekte Gross/Kleinschreibung zu verwenden, schliesslich möchtest du auch gerne eine korrekte Antwort ;))

So herum sprichst du die Elemente korrekt an:
Code:
<script type="text/javascript">
<!--
 fillSelectFromArray(document.auswohl.Var_bundesland, ((document.auswohl.Make.selectedIndex == -1) ? null : var_bundesland[document.auswohl.Make.selectedIndex-1]));
//-->
</script>
 
Hallo fatalus,

Vielen Dank für Deine Hilfe, habe das nun so umstrukturiert,
der Dropdown befüllt sich zwar nun, :) jedoch nicht mit der richtigen Auswahl. :(

Vielen Dank im Vorraus, für eure Hilfe

Gruss Mr.Bong
 
Zuletzt bearbeitet:
Also bei mir kommt z.B.
bei Wien....innere Stadt, Leopoldstr. usw...
bei Steiermark...Bad Aussee, Bruck/Mur usw.

ich kenn mich in Östereich nicht aus...scheint aber die korrekte Auswahl zu sein.

Oder meinst du etwas anderes?
 
Hallo,

Ich meinte damit, wenn ich zb. Steiermark - Weiz einstelle, danach auf weiter druck,
steht statt Weiz, - Bad Aussee drin
 
Naja...du hast auch nix in dem Skript, was dies bewirken würde.

Da du PHP verfügbar hast, wäre es das Einfachste, damit auszulesen, welche Option in Var_bundesland gewählt wurde, das in einer JS-Variablen zu speichern, und beim ersten Aufruf des Skriptes dies Option als "selected" zu markieren.
 
Hallo

Ja verstehe ich jetzt soweit schon, also mach ich einfach in der Function FillSelectfromArray
Code:
var Ergebnis = "<?echo $_HTTP_GET_VARS["Var_bundesland"];?>";
dazu.

jedoch weiss ich jetzt nicht wo ich den Hebel damit ansetzten soll,
damit sich das als selected über Javascript so verbindet.

Vielen Dank im Vorraus
Gruss !Mr.Bong
 
Am besten da, wo du die Optionen in die 2te Liste einhängst....vergleiche den value jeder Option mit dieser Variable...stimmt beides überein, selektiere sie und setzte die Variable auf -1
 
leider weiss ich jetzt nicht wo du meinst, wo ich das vergleichen soll.

im Javascript also in der Funktion,
oder im Teil unterhalb wo das alles in den Dropdown eingetragen wird.

Leider hab ich vom Javascript noch sehr wenig Erfahrung.

Vielen Dank im Voraus

Gruss !Mr.Bong
 
Soweit ich das überblicke, wäre dies eine gute Stelle:
Code:
if (itemArray != null) {
// add new items
for (i = 0; i < itemArray.length; i++) {
selectCtrl.options[j] = new Option(itemArray[i][0]);
if (itemArray[i][1] != null) {
selectCtrl.options[j].value = itemArray[i][1]; 
}

itemArray[i][1] ist der value der Option...damit müsstest du die Variable vergleichen.
 
Zurück