Wert eines Eingabefeldes in nicht focusiertem Frame verändern
Gunther Blenk
- javascript
Erstmal Hallöchen an alle Forumsteilnehmer!
Und hier mein Problem. Ich will den Wert eines Text-Eingabefeldes verändern, das sich in einem Frame befindet, der nicht focusiert ist und das ist auch so beabsichtigt.
Zuerst dachte ich, daß das doch nicht so schwer sein kann und versuchte folgendes:
parent.framename.formularname.feldname.value = ...
und:
parent.framename.forms[0].elements[index].value = ...
Doch das geht nicht. Weil typeof(parent.framename.document)'object' zurückgibt habe ich auch noch dies hier ausprobiert:
parent.framename.document.formularname.feldname.value = ...
parent.framename.document.forms[0].elements[index].value = ...
Nach vielen weiteren erfolglosen Versuchen habe ich schließlich doch eine Lösung gefunden, doch die ist alles andere als elegant und gefällt mir überhaupt nicht.
Wenn es da draußen also irgend jemanden geben sollte, der eine einigermaßen einfache Lösung für mein Problemchen kennt und der diese Nachricht liest, so bitte ich den Betreffenden (oder die Betreffende) um einen Hinweis, der mir weiterhilft.
Schon jetzt vielen Dank für die Hilfe
Gunther Blenk
Hi,
also es kann ja sein, dass ich jetzt einen Fehler übersehen habe, aber generell sollte
parent.framename.document.formularname.feldname.value
schon funktionieren. Wenn nicht, empfehle ich dir, mal die Namen zu checken, ob irgendwas doppelt vergeben ist, die Verschachtelung der Frames stimmt und du keine reservierten Namen oder ähnliches verwendet hast (z.B. ein Eingabefeld namens input oder so).
MfG
Rouven
Hi,
was auch immer "elegenat" sein mag, "kürzer" wird es bei direkter Adressierung der Objekte kaum. Beide Formen sind ja im Grund korrekt, ich würde aber folgende Variante nehmen, weil sie keine "Zweifel" über die Objekte lässt:
self.parent.frames['framename'].document.forms['formname'].elements['elementname'].value
(grübel: oder muss es gar self.parent.document.frames .. heissen?)
Alternativ kannst du im Zielframe mit dem Formular auch eine Funktion deklarieren um das Feld zu ändern und "extern" aufrufen, welche den "Objekt-Weg" ein bisserl verkürzt:
function setzeWert(eltName, eltWert) {
document.forms['formname'].elements[eltName].value = eltWert;
}
dann:
parent.frames['framename'].setzeWert('textfeld', 'der Wert');
Viel Spaß,
CirTap