PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Schliessen aller offenen Fenster wo window.name "Kalender" enthält


Trialrider
22.10.2003, 11:54:01
Hallo liebe Board-Gemeinde,

In einem Bestelldaten-Formular gibt es für jede Bestellposition Bestell- und Lieferdatum, welche über eine Inputbox ihre Werte erhalten. Wegen korrekter Werteingaben realisiere ich dies über einen (kleinen) Kalender.

...
echo "<input name='Bestelldatum_Neu_Pos_".[$i]."' onclick='kalender_zeigen(this.name)'>";
...

Das macht je Position einen möglichen offenen Kalender mit dem Namen: "Kalender 'Bestelldatum_Neu_Pos_X'" oder "Kalender 'Lieferdatum_Neu_Pos_X'". Wie kann ich nun beim Verlassen der Seite alle noch (versehentlich) offenen Kalender schliessen? Ich weiß ja nicht wie groß X ist. Sollte ich es mit MAX(X) probieren und dann schauen, ob es dafür ein Fenster gibt?

Allerdings gibt es noch mehr Formulare mit dem Klick zum Kalender, sprich die Bezeichnung des Fenster enthält immer "Kalender" und ich wollte es in ein JS-File packen.

Würde mich über Hilfe zur Lösung freuen.

Viele Grüße, Trialrider

diver-network
22.10.2003, 12:55:05
Hi Steffen,

übergebe doch beim Aufruf der Funktion kalender_zeigen einfach zwei Parameter, wobei einer davon den Wert für $i enthält, also onClick=kalender_zeigen(this.name,$i);
In der Funktion übergibst Du dann einfach den Wert für $i an den Kalender und öffnest den Kalender immer mit dem gleichen Fensternamen. Dadurch kannst Du sicher sein, daß immer nur ein Fenster offen ist und dieses, bei Bedarf, auch "auf die harte Tour" schließen.
Durch den Parameter $i weiß das Kalenderskript dann auch, wohin der Wert geschrieben werden muß.

Wenn Du willst schick ich Dir heute Abend noch mal das Skript mit obigen Änderungen zu, beim anderen Problem bin ich noch nicht weiter, Erklärung steht dann aber in der Mail.

Gruß,

Andy

Trialrider
22.10.2003, 13:13:23
Servus Andy, ich geb mal keine Hand (issbesser).

Skript? Jo machmal - Danke. "...anderen Problem..."???

Mmmh... Irgendwie lässt sich blöd denken mit verstopfter Nase und Rübe. Wenn ich: "kalender_zeigen(this.name, $i)" mache, dann hat das Fenster ja auch den Namen "this.name" (Bestelldatum_Neu_1..n. wie soll ich denn die jeweilige Position in den Kalender kriegen?

Äh, ich habe nämlich das Blättern in den Positionen wieder rausgenommen, da ich das Zwischenspeichern der geänderten Werte nicht hinbekommen hab. Positionen werden nun zeilenweise aufgeführt.

Werd mal noch ein bissl Denken und Probieren.

Vielen Dank und bis denne, Steffen

P.S.: Man sollte in einem Forum statt Threads lieber "Projekte" aufmachen können, wo dann immer nur die jeweils akt. Problem sichtbar sind. So würden wir bestimmt noch weiter oben im Pos-Ranking ankommen ;-)

Trialrider
22.10.2003, 13:32:57
Hi Andy.

Sicher meinst du, dass ich die Variablen per:

=> Kalender.document.forms[0].elements[Feld].value = SatzNr;

eintragen soll. Nur, wenn ich es mit dem MS Skript-Editor mach und von da aus teste, geht's. Mache ich es über'n IIS //nbkother/_tmp_/...
dann kennt er das Objekt nicht bzw. es ist Null...

Gibt's da einen Trick?

Gruß, Steffen

diver-network
22.10.2003, 20:11:44
Hi Steffen,

es stimmt, ich dachte, daß es möglich ist, jeden Kalender zwar mit dem gleichen Namen aufzurufen (sprich nur ein Fenster zu öffnen) aber einen Parameter zu übergeben, den man dann in das <feldname>.value=wert Statement einbauen kann. Aber irgendwie schaffe ich es nicht, den Feldnamen dynamisch in die Zuweisung einzubauen.

Eventuell schafft es ja jemand anderes, das Problem zu lösen.
Was ich noch gesehen habe ist, daß es beim window.open() Befehl die Möglichkeit gibt, das Attribut dependent="yes" zu setzen. Allerdings weiß ich nicht, ob das in jedem Browser funktioniert oder nicht.

Versuche auch mal, das Problem in einer JavaScript Usegroup zu suchen bzw. zu schildern. Es muß ja eigentlich eine Lösung geben. Verwende aber für die Anmeldung an der Usegroup bzw. zum Posten unbedingt eine spambare Email-Adresse, ansonsten hast Du bald 100e von Spam Mails in Deinem Posteingang!!

Das andere Problem mit dem submit() hängt an dem document.write() Befehl, der kein Dokument mehr findet. Hier überlege ich noch weiter, weiß aber nicht, wann ich dazu komme, es auszuprobieren. Im Moment funktioniert der Kalender ja, also eilt es nicht.

Gruß und GUTE BESSERUNG,

Andy

Trialrider
23.10.2003, 10:01:04
Hi Andy,

Danke für die gute Besserung. Bissl Medikamente und viel Warm und Schwitz (daheim in Wanne) und Schlaf haben mich fast wieder gesundet, denk mla bis zum Sonnatg wirds wohl nohc dauern bis auch der letzte Rot... raus ist.

Ich habe für das Problem mit dem Schliessen einfach eine Kontrolle eingebaut, die schaut ob schon ein Kalenderfenster offen ist und dies bei "True" schließt. Folglich gibt es immer nur ein offenen Kalender.

Der Feldname wird nach wie vor als Kalenderfensternamen verwendet und neu: enthält auch, wie das Datum zurückkommt. Im Kalender-Skript wird der Name zerlegt nach "_mode_" (JS will einfach nicht " mode: " akzeptieren!). Damit geht es erstmal.

Werde wohl doch die dcljs.de mal fragen wie man aus dem Elternfenster im PopUp Werte übergeben kann. Das mit der Mail-Addi ist schon zu spät. Auch werden die mit "falscher" Addi mitunter doof angemacht, statt geholfen zu kriegen. [Caps]+[RMB]=>"Löschen" hilft immernoch am besten gegen SPAM.

Gruß und vielen Dank, Steffen

Trialrider
23.10.2003, 14:32:32
So rum geht's:
if (window.opener && window.opener.document.forms[0].elements[FeldName1])
document.forms[0].elements[FeldName2].value = window.opener.document.forms[0].elements[FeldName1].value;Viele Grüße, Steffen