2 Dropdownmenüs
Markus
- javascript
0 Struppi0 Markus0 Struppi0 Markus0 Andreas Schneider0 Markus
0 Struppi
0 Andreas Schneider
HI!
Möchte wenn ich eine Auswahl im 1 Dropdown "Bezirk" eine Auswahl im 2 Dropdownmenü "Bundesland" aktiviert wird.
Habs so probiert geht aber leider nicht - was könnte daran falsch sein?:
function chkBezirk()
{
if(document.Formular.Bezirk.selectedIndex == 2)
document.Formular.Bundesland.selectedIndex == 3;
}
Meine zweite Frage wie könnte ich den Bezirk index von 2 erweitern und sagen 2 und 4 und 8 zb.(selectedindex == 2 && 4 && 8 geht ja nicht)
Wer kann mir da bitte weiterhelfen?
Danke
MFG
Markus
HI!
Möchte wenn ich eine Auswahl im 1 Dropdown "Bezirk" eine Auswahl im 2 Dropdownmenü "Bundesland" aktiviert wird.
Ähm, könntest du mal dein Sprachmodul aktivieren?
Habs so probiert geht aber leider nicht - was könnte daran falsch sein?:
Keine ahnung, was passiert den falsches?
function chkBezirk()
{
if(document.Formular.Bezirk.selectedIndex == 2)
document.Formular.Bundesland.selectedIndex == 3;
^^^^
Bist du sicher, dass du da einen Vergleich machen möchtest?
}
Meine zweite Frage wie könnte ich den Bezirk index von 2 erweitern und sagen 2 und 4 und 8 zb.(selectedindex == 2 && 4 && 8 geht ja nicht)
Wus? (Sprachmodul)
Struppi.
Hi Strupi!
Also nochmal*gg*
Hab ein Dropdown: "Bezirk" mit allen Bezirken
Hab ein Dropdown: "Bundesland" mit allen Bundesländern
Möchte wenn ich den Bezirk "Graz-Stadt" auswähle dass das Bundesland "Steiermark" im 2 Dropdown ausgewählt wird.
Möchte wenn ich eine Auswahl im 1 Dropdown "Bezirk" eine Auswahl im 2 Dropdownmenü "Bundesland" aktiviert wird.
Ähm, könntest du mal dein Sprachmodul aktivieren?
Es passiert leider gar nichts
Keine ahnung, was passiert den falsches?
function chkBezirk()
{
if(document.Formular.Bezirk.selectedIndex == 2)
document.Formular.Bundesland.selectedIndex == 3;
^^^^Bist du sicher, dass du da einen Vergleich machen möchtest?
Was meisnt du mit vergleich?
}
Meine zweite Frage wie könnte ich den Bezirk index von 2 erweitern und sagen 2 und 4 und 8 zb.(selectedindex == 2 && 4 && 8 geht ja nicht)
Soll heißen wenn ich Bez: Graz-Stadt(index2) und Graz-Umgebung(index4) und Leoben(index8) habe dass dann das Bundesland "Steiermark" ausgewählt wird.
Hoffe es wurde jetzt ein wenig deutlicher*ggg*
Danke
MFG
Markus
Hi Strupi!
Also nochmal*gg*
Hab ein Dropdown: "Bezirk" mit allen Bezirken
Hab ein Dropdown: "Bundesland" mit allen BundesländernMöchte wenn ich den Bezirk "Graz-Stadt" auswähle dass das Bundesland "Steiermark" im 2 Dropdown ausgewählt wird.
Dass sollte dein Skript machen, wenn du statt des Vergleiches eine Zuweisung benutzt.
if(document.Formular.Bezirk.selectedIndex == 2)
document.Formular.Bundesland.selectedIndex = 3;
Ähm, könntest du mal dein Sprachmodul aktivieren?
Es passiert leider gar nichts
Gute Antwort ;-)
Bist du sicher, dass du da einen Vergleich machen möchtest?
Was meisnt du mit vergleich?
Zwei Gleicheitszeichen sind ein Vergleich.
Soll heißen wenn ich Bez: Graz-Stadt(index2) und Graz-Umgebung(index4) und Leoben(index8) habe dass dann das Bundesland "Steiermark" ausgewählt wird.
Dazu musst du alle Options durchgehen und dann testen ob die gewählt wurden.
var form = document.Formular;
for(var i = 0; i < form.Bezirk.length;i++)
{
if(form.Bezirk[i].selected) alert(i + ' wurde gewählt.');
}
Hoffe es wurde jetzt ein wenig deutlicher*ggg*
Ja ;-)
Struppi.
HI
So funktioniert es:
if(document.Formular.Bezirk.selectedIndex == 2)
document.Formular.Bundesland.selectedIndex = 3;
Muß man auch erst wissen*gg*
Zwei Gleicheitszeichen sind ein Vergleich.
Weiß net ob da jetzt das richtige gemeint ist:
Denke die Variante von Andreas muß auch passen oder?
Es gibt zb.: 50 Bezirke aber 9 Bundesländer bei mir halt*g*
Jeder Bezirk kann nur 1 mal ausgewählt werden..
nur es treffen halt für mehrere Bezirke das gleiche Bundesland zu..
Wäre dann die Oder Variante nicht angebracht?
Glaube du überprüfst mit dem script was anderes oder?
var form = document.Formular;
for(var i = 0; i < form.Bezirk.length;i++)
{
if(form.Bezirk[i].selected) alert(i + ' wurde gewählt.');
}
MFG
Markus
Hallo Markus,
Weiß net ob da jetzt das richtige gemeint ist:
Denke die Variante von Andreas muß auch passen oder?Es gibt zb.: 50 Bezirke aber 9 Bundesländer bei mir halt*g*
Jeder Bezirk kann nur 1 mal ausgewählt werden..
nur es treffen halt für mehrere Bezirke das gleiche Bundesland zu..
In diesem Fall, also wenn nur ein Bezirk ausgewählt werden kann, macht meine Variante tatsächlich Sinn.
Wäre dann die Oder Variante nicht angebracht?
Ja. Eine andere Möglichkeit wäre switch:
switch (document.Formular.Bezirk.selectedIndex) {
case 2: case 4: case 8:
// bundesland 1
break;
case 1: case 3:
// bundesland 2
...
}
Glaube du überprüfst mit dem script was anderes oder?
Nein, aber Struppis Script berücksichtigt auch multiple Selektion.
Grüße
Andreas
HI Andreas
Danke für deine Hilfe!
Funktioniert so wie du es beschrieben hast die case variante muß ich erst testen..
aber wenn ich es so mit oder verknüpfe geht es nicht:
if(document.Formular.Bezirk.selectedIndex == 2 || selectedIndex == 3) document.Formular.Bundesland.selectedIndex = 4;
muß da glaub ich die wurst nochmal schreiben nur das seletedindex == ist zu wenig mit oder(||). od mach ich was falsch? (abgesehen von der case variante?
Nun soweit so gut das funktioniert mal aber wie mache ich die umgekehrte Variante?
Wenn jemand ein Bundesland auswählt das dann im Bezirks Dropdown nurmehr die entsprechenden Bezirke zum ausgewählten Bundesland sind?
Nehmen wir an:
if(document.Formular.Bundesland.selectedIndex == 1)
dann sollen Bezirke 2 && 3 && 4 zur auswahl stehen?
Wie geht das nun die umgekehrte Variante?
Kannst du mir da auch bitte weiterhelfen?
Danke
MFG
Markus
Hallo Markus,
if(document.Formular.Bezirk.selectedIndex == 2 || selectedIndex == 3) document.Formular.Bundesland.selectedIndex = 4;
muß da glaub ich die wurst nochmal schreiben nur das seletedindex == ist zu wenig mit oder(||). od mach ich was falsch? (abgesehen von der case variante?
Entweder immer wieder alles hinschreiben, oder with verwenden:
with (document.Formular.Bezirk) {
if (selectedIndex == 2 || selectedIndex == 4) {
...
}
}
http://selfhtml.teamone.de/javascript/sprache/objekte.htm#with
Nun soweit so gut das funktioniert mal aber wie mache ich die umgekehrte Variante?
Zuerst löschst Du die Bundesländer aus der Liste:
http://selfhtml.teamone.de/javascript/objekte/options.htm#elemente_loeschen
Am einfachsten geht das, indem Du die Länge auf 0 setzt (document.Formular.Bundesland.length = 0;)
Dann füllst Du die Liste neu:
http://selfhtml.teamone.de/javascript/objekte/options.htm#neue_elemente
Grüße
Andreas
Hi Andreas
Danke noch mal für deine Bemühungen!
Der erste Teil haut jetzt mal super hin. (dh. Wenn ein bestimmter Bezirk ausgewählt ist dass dann das dazugehörige Bundesland kommt)
Zur 2 Variante:
Da haut es noch nicht hin..
Zuerst geht es mal darum das wenn ein Bundesland ausgewählt ist in dem 2 Dropdown nur die zu dem ausgewählten Bundesland entsprechenden Bezirke zur Verfügung stehen sollen.
Die Liste "Bezirk" löschen hab ich mal hingebracht so:
function chkBundesland()
{
var bundesland =document.Formular.Bundesland.selectedIndex;
if(bundesland > 0) document.Formular.Bezirk.length = 1;
}
Zuerst löschst Du die Bundesländer aus der Liste:
Hab die Länge auf 1 gesetzt da ich im Bezirk Dropdown auf der 0 Postition einen default werd "Alle" habe. funktioniert auch so..
Am einfachsten geht das, indem Du die Länge auf 0 setzt (document.Formular.Bundesland.length = 0;)
Mit dem füllen hab ich nun meine Probleme:
Hab mir den Link angeschaut aber werde nicht ganz schlau..
Laut dem Link müßt ich wieder alle entsprechenden Bezirke neu reinschreiben..
Aber ist es nicht möglich die Bezirke die ja eigentlich schon im Dropdownmenü direkt anzusprechen mit dem entsprechenden Index wie zb:
if(bundesland == 1) document.Formular.Bezirk.selectedIndex = 2 &&
document.Formular.Bezirk.selectedIndex = 4 &&
document.Formular.Bezirk.selectedIndex = 8;
Ist schon irgendwie klar das das nicht gehen kann weil eben selected nur einer sein kann. aber vl gehts so ähnlich, aber wie?
Dann füllst Du die Liste neu:
Wäre über eine weitere Hilfe sehr dankbar
MFG
Markus
Hallo Markus,
Mit dem füllen hab ich nun meine Probleme:
Hab mir den Link angeschaut aber werde nicht ganz schlau..
Laut dem Link müßt ich wieder alle entsprechenden Bezirke neu reinschreiben..
Genau.
Dazu speicherst Du ganz am Anfang alle Bezirke in einem zweidimensionalen Array. Der erste Index ist der Index des Bundeslandes in Deiner Liste und der zweite Index ist für den Bezirk. Als Wert speicherst Du den Namen des Bezirks im Array. Wenn jetzt ein Bundesland ausgewählt wird, dann füllst Du die Bezirksliste nur mit den Arrayelementen, deren erster Index gleich dem selectedIndex der Bundeslandliste ist.
Ich hoffe, ich habe mich einigermassen verständilich ausgedrückt.
Grüße
Andreas
HI Andreas!
Nochmals danke
Mein Problem dabei ist das die Bezirke und die Bundesländer aus einer Datenbank in die Dropdownmenüs kommen..
Dh. ich müßte nun alle Bezirke nochmal in die Arrays schreiben, oder?
Gibts denn nicht eine möglichkeit die Bezirke über options[] anzusprechen? zb.: options[2] und options[4] und options[8] usw...?
Ich meine die Bezirke sind ja auch im Hintergrund da wenn man zuerst die Bezirkspalte auf null setzt und man sich denn quellcode ansieht sind alle option Felder noch da...
Gibts denn nicht ne möglichkeit auch wenn es umständlicher ist die arrays zu umgehen?
Dazu speicherst Du ganz am Anfang alle Bezirke in einem zweidimensionalen Array. Der erste Index ist der Index des Bundeslandes in Deiner Liste und der zweite Index ist für den Bezirk. Als Wert speicherst Du den Namen des Bezirks im Array. Wenn jetzt ein Bundesland ausgewählt wird, dann füllst Du die Bezirksliste nur mit den Arrayelementen, deren erster Index gleich dem selectedIndex der Bundeslandliste ist.
War schon verständlich danke..
Ich hoffe, ich habe mich einigermassen verständilich ausgedrückt.
Vl kannst mir bitte nochmal helfen
MFG
Markus
Hallo Markus,
Mein Problem dabei ist das die Bezirke und die Bundesländer aus einer Datenbank in die Dropdownmenüs kommen..
Dh. ich müßte nun alle Bezirke nochmal in die Arrays schreiben, oder?
Ja.
Gibts denn nicht eine möglichkeit die Bezirke über options[] anzusprechen? zb.: options[2] und options[4] und options[8] usw...?
Nein, denn nach der ersten Auswahl eines Bundeslandes und neuem Füllen der Bezirke sind ja nur noch die Bezirke dieses Bundeslandes übrig. Wenn jetzt ein anderes Bundesland ausgewählt wird müssen dessen Bezirke ja auch irgendwo herkommen.
Gibts denn nicht ne möglichkeit auch wenn es umständlicher ist die arrays zu umgehen?
Nun ja, Du könntest die Bezirke serverseitig füllen. Das würde aber bedeuten, daß nach jeder Auswahl eines Bundeslandes wieder eine Anfrage an den Server gestellt und das Formular neu aufgebaut werden muß. Wenn es allerdings clientseitig ablaufen soll, dann mußt Du die Bezirke auch clientseitig speichern.
Grüße
Andreas
HI Andreas!
Wie baue ich in meinem Fall ein 2 dimensionalles Array auf?
bitte um ein Beispiel:
bzw wenn ich das Array erstellt habe wie spreche ich es an mit dem Bundesland zb?
Bitte nochmals um deine Hilfe stehe echt an..
Danke MFG
Markus
Hallo Markus,
Wie baue ich in meinem Fall ein 2 dimensionalles Array auf?
bitte um ein Beispiel:
z.B. so:
<script type="text/javascript">
var bl = new Array(9); // Globales Array, das die Bezirke der 9 Bundesländer enthält
bl[0] = new Array("Bezik1 für bundesland1", "Bezik2 für bundesland1", ...)
bl[1] = new Array("Bezik1 für bundesland2", "Bezik2 für bundesland2", ...)
...
</script>
das machst Du für alle Bundesländer. Da die Bundesländer und Bezirke aus einer Datenbank kommen, schaut Dein serverseitiger Code ungefähr so aus:
bl[0] = new Array("<%= bz1 %>", "<%= bz2 %>", ...)
wobei die bz1 bis bzn die Bezirke sind.
Grüße
Andreas
Weiß net ob da jetzt das richtige gemeint ist:
Denke die Variante von Andreas muß auch passen oder?Es gibt zb.: 50 Bezirke aber 9 Bundesländer bei mir halt*g*
Jeder Bezirk kann nur 1 mal ausgewählt werden..
nur es treffen halt für mehrere Bezirke das gleiche Bundesland zu..
Dann ist doch Andreas Variante die richtge.
var index = document.Formular.Bezirk.selectedIndex;
if(index == 4 || index == 8 || index == blabla)
{
indemAnderenFormular.selctedIndex = 9;
}
Wäre dann die Oder Variante nicht angebracht?
Glaube du überprüfst mit dem script was anderes oder?var form = document.Formular;
for(var i = 0; i < form.Bezirk.length;i++)
{
if(form.Bezirk[i].selected) alert(i + ' wurde gewählt.');
}
Ja, ich wollte dir demonstrieren wie du vorgehen musst, wenn du mehrere Möglichkeit gleichzeitig auswählen kannst und festellen willlst welche gewählt wurden. Das willst du aber nicht auch wenn es so klang.
Struppi.
Hallo Markus,
if(document.Formular.Bezirk.selectedIndex == 2)
document.Formular.Bundesland.selectedIndex == 3;
^^^^Bist du sicher, dass du da einen Vergleich machen möchtest?
Was meisnt du mit vergleich?
== ist ein Vergleichsoperator. Eine Wertzuweisung machst Du mit einem einfachen Gleichheitszeichen.
Meine zweite Frage wie könnte ich den Bezirk index von 2 erweitern und sagen 2 und 4 und 8 zb.(selectedindex == 2 && 4 && 8 geht ja nicht)
Soll heißen wenn ich Bez: Graz-Stadt(index2) und Graz-Umgebung(index4) und Leoben(index8) habe dass dann das Bundesland "Steiermark" ausgewählt wird.
if (selectedIndex == 2 || selectedIndex == 4 || ...)
Du verwendest besser Oder (||) statt Und (&&), den selected Index kann nicht gleichzeitig mehrere Werte haben.
Grüße
Andreas
Hallo nochmal,
if (selectedIndex == 2 || selectedIndex == 4 || ...)
Du verwendest besser Oder (||) statt Und (&&), den selected Index kann nicht gleichzeitig mehrere Werte haben.
Das war jetzt Unsinn. Siehe Struppis Antwort.
Grüße
Andreas