Option-Felder
Mssmar
- javascript
Ich fülle ein Dropdown-Menu dynamisch mit Inhalt.
Am Ende der Funktion, rufe ich eine submit() Funktion auf, die diese Formular rausschickt.
Mein Problem ist, dass durch den Aufruf von: formObj.submit();
am Edne, die Dropdowmenus wieder geleert werden und damit erreiche ich nicht dass die Oprtion-Felder gefüllt werden.
Wüsste Jemand evtl. woran es legen könnte?
Vielen Dank und Gruß
Messmar
function changeGID(selObj) {
var formObj = selObj.form;
akt_date = new Array();
akt_date["IIS"] = new Array;
akt_date["IIS"][0] = "";
akt_date["IIS"][1] = "26 April 2006";
akt_date["IIS"][2] = "27 April 2006";
akt_date["IIS"][3] = "28 April 2006";
akt_date["OIM"] = new Array;
akt_date["OIM"][0] = "";
akt_date["OIM"][1] = "oim_2006-12-02";
akt_venue = new Array();
akt_venue["IIS"] = new Array;
akt_venue["IIS"][0] = "";
akt_venue["IIS"][1] = "Alverton Manor";
akt_venue["IIS"][2] = "Crowne Plaza";
akt_venue["IIS"][3] = "Woodbury Park";
akt_venue["OIM"] = new Array;
akt_venue["OIM"][0] = "";
akt_venue["OIM"][1] = "oimVanue_01";
akt_location = new Array();
akt_location["IIS"] = new Array;
akt_location["IIS"][0] = "";
akt_location["IIS"][1] = "Truro";
akt_location["IIS"][2] = "Glasgow";
akt_location["OIM"] = new Array;
akt_location["OIM"][0] = "";
akt_location["OIM"][1] = "oimLocation_01";
choosenSystem = document.form.gid.options[document.form.gid.options.selectedIndex].text;
rebuild_menu();
for(i=0; i<akt_date[choosenSystem].length; i++) {
optionen = new Option(akt_date[choosenSystem][i]);
document.form.date.options[i] = optionen;
document.form.date.options[i].value = akt_date[choosenSystem][i];
}
for(i=0; i<akt_venue[choosenSystem].length; i++) {
optionen = new Option(akt_venue[choosenSystem][i]);
document.form.venue.options[i] = optionen;
document.form.venue.options[i].value = akt_venue[choosenSystem][i];
}
for(i=0; i<akt_location[choosenSystem].length; i++) {
optionen = new Option(akt_location[choosenSystem][i]);
document.form.location.options[i] = optionen;
document.form.location.options[i].value = akt_location[choosenSystem][i];
}
formObj.submit();
}
hi,
Ich fülle ein Dropdown-Menu dynamisch mit Inhalt.
Am Ende der Funktion, rufe ich eine submit() Funktion auf, die diese Formular rausschickt.
Du meinst also, dass du über das ganz normale Abschicken eines Formulars ein neues Dokument ins selbe Fenster hineinladen lässt - oder etwas anderes?
Mein Problem ist, dass durch den Aufruf von: formObj.submit();
am Edne, die Dropdowmenus wieder geleert werden und damit erreiche ich nicht dass die Oprtion-Felder gefüllt werden.Wüsste Jemand evtl. woran es legen könnte?
Wenn so wie oben beschrieben - ja dann natürlich daran, dass du ein neues Dokument vom Server erhältst.
gruß,
wahsaga
hi,
danke schon mal.
Wenn so wie oben beschrieben - ja dann natürlich daran, dass du ein neues Dokument vom Server erhältst.
Und wie kann man sowas umgehen?
Gruß
Messmar
hi,
Wenn so wie oben beschrieben - ja dann natürlich daran, dass du ein neues Dokument vom Server erhältst.
Und wie kann man sowas umgehen?
Befülle dein Selectfeld auf der neuen Seite erneut.
gruß,
wahsaga
hi,
Befülle dein Selectfeld auf der neuen Seite erneut.
Mit dem hier komme ich nicht weiter, da nicht die ganze Funkiton ausgeführt wird.
Es bleibt bei der ersten Abfrage hängen. Es sei denn es wird wieder
ein neues Dokument geladen und damit wird die Option nicht mit dem neun Inhslt gefüllt.
Danke und Gruß
Messmar
<SCRIPT LANGUAGE="JavaScript">
<!--
function changeGID(selObj) {
var formObj = selObj.form;
formObj.submit();
}
var Wert1 = 1;
var Wert2 = 1;
var Wert3 = 1;
function hinzu() {
var optionVenue = document.form.gid.options[document.form.gid.options.selectedIndex].Text;
if(optionVenue!='OIM') {
alert('hier we are');
}else {
var position=null;
//if ( optionVenue!='IIS'){
alert('Debug');
document.form.date.length = 0;
document.form.location.length = 0;
document.form.venue.length = 0;
position=position=document.getElementsByName("date")[0].length;
position=position=document.getElementsByName("location")[0].length;
position=position=document.getElementsByName("venue")[0].length;
var Eintrag1 = document.createElement("option");
Eintrag1.text = document.getElementsByName("Eingabe1")[0].value;
Eintrag1.value = Wert1;
Wert1 += 1;
var Eintrag2 = document.createElement("option");
Eintrag2.text = document.getElementsByName("Eingabe2")[0].value;
Eintrag2.value = Wert2;
Wert2 += 1;
var Eintrag3 = document.createElement("option");
Eintrag3.text = document.getElementsByName("Eingabe3")[0].value;
Eintrag3.value = Wert3;
Wert3 += 1;
document.getElementsByName("date")[0].add(Eintrag1,position);
document.getElementsByName("location")[0].add(Eintrag2,position);
document.getElementsByName("venue")[0].add(Eintrag3,position);
}
//}
}
//-->
</SCRIPT>
Der Neue Inhalt für die Option-Felder hole aus drei hidden-Input-Felder:
<input type="Hidden" name="Eingabe1" value="wWWWWWWW" size="30">
<input type="Hidden" name="Eingabe2" value="XXXXXXX" size="30">
<input type="Hidden" name="Eingabe3" value="EEEEEEEE" size="30">
Es bleibt bei der ersten Abfrage hängen. Es sei denn es wird wieder
ein neues Dokument geladen und damit wird die Option nicht mit dem neun Inhslt gefüllt.
Und keine JS Fehlermeldung?
[code lang=html]
<SCRIPT LANGUAGE="JavaScript">
Das language schon lange mißbiligt ist, weißt du aber und das Pflichattribut type läßt du ebefalls bewußt weg?
<!--
Stattdessen kannst du Problemlos die HTML Kommenatare weglassen, Browser die das script Tag nicht kennen dürften in freier Wildbahn nicht mehr existieren.
var Wert1 = 1;
var Wert2 = 1;
var Wert3 = 1;
Das schreit nach einem Array.
document.form.date.length = 0;
document.form.location.length = 0;
document.form.venue.length = 0;position=position=document.getElementsByName("date")[0].length;
position=position=document.getElementsByName("location")[0].length;
position=position=document.getElementsByName("venue")[0].length;
sind die Elemente die Gleichen wie die Felder oben? Dann würde ich eher document.forms[...].elements[...] benutzen
Wozu die doppelte zuweisung?
document.getElementsByName("date")[0].add(Eintrag1,position);
document.getElementsByName("location")[0].add(Eintrag2,position);
document.getElementsByName("venue")[0].add(Eintrag3,position);
Was die Funktion add() macht müßtest du uns auch noch verraten.
Struppi.
Hi,
Und keine JS Fehlermeldung?
Leider erhalte ich keine ;-(
Das language schon lange mißbiligt ist, weißt du aber und das Pflichattribut type läßt du ebefalls bewußt weg?
passiert nichts, wenn ich es weglasse.
<!--
Stattdessen kannst du Problemlos die HTML Kommenatare weglassen, Browser die das script Tag nicht kennen dürften in freier Wildbahn nicht mehr existieren.
Da hast du Recht.
var Wert1 = 1;
var Wert2 = 1;
var Wert3 = 1;Das schreit nach einem Array.
Stimmt. Die Option-Einträge werden ja in einem Array im Document automatisch gespeichert oder nicht?
document.form.date.length = 0;
document.form.location.length = 0;
document.form.venue.length = 0;position=position=document.getElementsByName("date")[0].length;
position=position=document.getElementsByName("location")[0].length;
position=position=document.getElementsByName("venue")[0].length;sind die Elemente die Gleichen wie die Felder oben? Dann würde ich eher document.forms[...].elements[...] benutzen
Die sind gleich.
Wozu die doppelte zuweisung?
document.getElementsByName("date")[0].add(Eintrag1,position);
document.getElementsByName("location")[0].add(Eintrag2,position);
document.getElementsByName("venue")[0].add(Eintrag3,position);
Was die Funktion add() macht müßtest du uns auch noch verraten.
Das ist ein Fehler. ich habe den Aufruf jetzt vom code entrfernt, aber dann bleiben die Option-Felder leer.
Messmar
Und keine JS Fehlermeldung?
Leider erhalte ich keine ;-(
sicher?
Du hast in der JS Konsole nachgeschaut?
Allein schon die fehlende Funktion .add() hätte der Browser bemängeln müssen.
Das language schon lange mißbiligt ist, weißt du aber und das Pflichattribut type läßt du ebefalls bewußt weg?
passiert nichts, wenn ich es weglasse.
Wie soll ich das verstehen?
Man kann halt sauberen Code schreiben oder rumfrickeln
Stimmt. Die Option-Einträge werden ja in einem Array im Document automatisch gespeichert oder nicht?
Wie meinst du das?
Die sind gleich.
Dann ist es merkwürdig, dass du zwei verschiedenen Varianten des Zugriffs verwendest und warum du nicht, da du die Felder ja noch häufiger benutzt, Variabeln verwendest.
Was die Funktion add() macht müßtest du uns auch noch verraten.
Das ist ein Fehler. ich habe den Aufruf jetzt vom code entrfernt, aber dann bleiben die Option-Felder leer.
Also entweder gibt es die Funktion add() nicht, dann bekommst du ein Fehlermeldung oder du hast eine Funktion .add an das Objekt gehängt und dann wäre es interessant die zu kennen.
Struppi.
Und keine JS Fehlermeldung?
Leider erhalte ich keine ;-(
sicher?
Du hast in der JS Konsole nachgeschaut?
Allein schon die fehlende Funktion .add() hätte der Browser bemängeln müssen.
Ja sicher. Ich habe gerade extra nachgeschaut.
Unter Firefox funktioniert soweiso die Funktion nicht. Ich erhalte gar nichts.
Wie soll ich das verstehen?
Man kann halt sauberen Code schreiben oder rumfrickeln
Ok, man sollte den code ganz sauber und richtig schreiben oder nicht.
Stimmt. Die Option-Einträge werden ja in einem Array im Document automatisch gespeichert oder nicht?
Wie meinst du das?
dass sie halt im Aray gespeichert werden. Im Window-Document.
Dann ist es merkwürdig, dass du zwei verschiedenen Varianten des Zugriffs verwendest und warum du nicht, da du die Felder ja noch häufiger benutzt, Variabeln verwendest.
Was die Funktion add() macht müßtest du uns auch noch verraten.
Also entweder gibt es die Funktion add() nicht, dann bekommst du ein Fehlermeldung oder du hast eine Funktion .add an das Objekt gehängt und dann wäre es interessant die zu kennen.
Diese Funktion gibt es nicht, ich habe die letzten drei Anweisungen entfernt.
Wie könnte ich es dann hinbekommen, ein neues Dokument mit dem neuen Inhalt für die Option-Felder zu erstellen.
Die Idee von Wahrsaga ist richtig, aber ich komme einfach nicht auf den richtigen ersten schritt. irgendwie bekomme ich eine Denkblokade.
Für einen Hinweis bin ich sehr Dankbar.
Gruß
Messmar
hi,
Wenn so wie oben beschrieben - ja dann natürlich daran, dass du ein neues Dokument vom Server erhältst.
Ich habe es jetzt;-) Ich musste nur die Funktion noch einmal im Body-Tag extra aufrufen.
Danke noch mal für eure Mühe.
Gruß,
Messmar
akt_date = new Array();
warum mißbrauchst du ein Array als Objekt?
akt_date["IIS"] = new Array;
akt_date["IIS"][0] = "";
akt_date["IIS"][1] = "26 April 2006";
akt_date["IIS"][2] = "27 April 2006";
akt_date["IIS"][3] = "28 April 2006";akt_date["OIM"] = new Array;
akt_date["OIM"][0] = "";
akt_date["OIM"][1] = "oim_2006-12-02";
Übrigens schöner und übersichtlicher kann man das so schreiben:
var akt_date = {
IIS: ['', "26 April 2006", "27 April 2006", "28 April 2006"],
OIM: ['', "oim_2006-12-02"]
};
Struppi.