onClick -> checkbox markieren

poolpage

Erfahrenes Mitglied
Folgender PHP-Codeschnipsel innerhalb eines "echos" ist gegeben:

PHP:
<td>$anzahlaktien</td>

<form name=\"gekauft\">

<td>$betrag &raquo; <a href=\"#\" 
onclick=\"Javascript: document.gekauft.$id.checked;\" 
onclick=\"Javascript: var win = open('popup.php?aktie=$id&anzkaufen=$anzahlaktien&
limite=$sqlergebnis[kurs]&kurs=$sqlergebnis[kurs]','',
'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=1,width=200,height=150'); win.focus();\">Diese Aktien kaufen</a>&nbsp;
<input title=\"Aktien gekauft\" type=\"Checkbox\" name=\"$id\" value=\"v\"></td>
 </tr></form>

Wenn ein User auf den Link klickt, soll das Popup aufgehen und gleichzeitig die Checkbox rechts neben dem Link mit einem Häkchen markiert werden. ähm - wie mach ich das? :)

Danke & Gruss,
poolpage

(Zeilenumbrüche zwecks besserer Übersicht bewusst...)
 
meines wissens kannst du nicht zweimal bei einem link die onClick-Funktion verwenden. am besten machst du oben im <head>-bereich ne funktion mit den beiden sachen drin und rufst die dann mittels onClick auf.
 
Versuch's mal so:

  onclick=\"javascript:document.gekauft.$id.checked=true; var win = open
  ('popup.php?aktie=$id&anzkaufen=$anzahlaktien&limite=$sqlergebnis[kurs]&kurs=$sqlergebnis
  [kurs]','','toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,
  resizable=1,width=200,height=150'); win.focus();\"
 
1.
In den Anweisungsblock eines EventHandlers wie onClick gehört nie eine javascript: -URL hinein, die kann jeder meinetwegen in das href-Attribut eines Links schreiben, hat aber in EventHandlern nix zu suchen, da diese eh nur JavaScript-Anweisungen erwarten.

2.
Bitte nie versuchen, ein PopUp in der Art
PHP:
<a href"..." onClick="open('bla', 'blubb');">
zu öffnen, denn das geht schneller in die Hose als man denkt - hängt mit dem Scoping in JavaScript zusammen.
Es exstiert nämlich außer der open()-Methode des window-Objektes auch eine open()-Methode des document-Objektes - und die öffnet nur ein Dokument, kein Fenster.

Da das document-Objekt in der Elementhierarchie unter dem window-Objekt steht, wird beim Durchlaufen der Scoping-Kette von unten an zuerst die open()-Methode des document-Objektes ausgeführt, bevor windo.open() erreicht werden würde.

Damit würde sich kein Fenster öffnen, sondern das aktuelle Dokument neu geöffnet...nicht im Sinne des Users denke ich.

Von daher vor jeder open()-Anweisung, die ein PopUp öffnen soll bitte ein window. voranstellen, damit ist explizit geklärt, welche Methode aufgerufen werden soll. :)
PHP:
onClick="document.gekauft.$id.checked=true; var win = window.open(bla','blubb','blablubb'); win.focus();"
hth,
Geist
 
Zuletzt bearbeitet:
äähhhm... OK, hab mal versucht beides nach bestem Wissen und Gewissen zu korrigieren, aber ich nehm an ich hab irgendwo einen Denkfehler gemacht... (Argh, wieso ist JavaScript nicht gleich wie PHP? Das kann ich wenigstens einigermassen...)

PHP:
<form name=\"gekauft\">
  <td>$betrag &raquo; <a href=\"#\" onclick=\"document.gekauft.$id.checked=true; 
var win = window.open('popup.php
?aktie=$id&anzkaufen=$anzahlaktien&limite=$sqlergebnis[kurs]&kurs=$sqlergebnis[kurs]',
'','toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,
resizable=1,width=200,height=150'); 
win.focus();\">Diese Aktien kaufen</a>

&nbsp;<input title=\"Aktien gekauft\" type=\"Checkbox\" name=\"$id\" value=\"v\"></td>
 </tr></form>

Danke & Gruss,
poolpage
 
Wäre von der Sache her nicht ungünstig, zu wissen *was* nicht funktioniert.

Klappt denn sowohl die Checkbox-Sache als auch das PopUp nicht?

Trenne doch mal die beiden Anweisungen, lass erstmal die PopUp-Anweisungen draußen und schau, ob die Checkbox läuft.
Falls das klappt, dann gib bitte mal noch dem zu öffnenden Fenster einen Namen und versuche das PopUp-Script unabhängig von den Checkbox-Anweisungen laufen zu lassen.

Fehler wird irgendwo bei der Verknüpfung von JavaScript und PHP liegen, da bin ich leider auch nicht so bewandert...

Geist
 
Hm, wenn ich alles rausnehme bis auf die "Checkbox-Funktion", d.h. nur folgendes drinlasse:

<form name="gekauft">
<td>10020 &raquo; <a href="#" onclick="document.gekauft.2.checked=true;">Diese Aktien kaufen</a>&nbsp;<input title="Aktien gekauft" type="Checkbox" name="2" value="v"></td>
</tr></form>

Passiert beim Klick auf den Link *überhaupt nichts*.

Wenn ich nur die window.open-Anweisung drinlasse, d.h. folgendes:

<form name="gekauft">
<td>10020 &raquo; <a href="#" onclick="var win = window.open('popup.php?aktie=2&anzkaufen=10&limite=1002&kurs=1002','','toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=1,width=200,height=150'); win.focus();">Diese Aktien kaufen</a>&nbsp;<input title="Aktien gekauft" type="Checkbox" name="2" value="v"></td>
</tr></form>

Funktioniert alles wie gehabt, d.h. es öffnet sich ein Fenster.

Der Fehler liegt also irgendwo hier:

<a href="#" onclick="document.gekauft.2.checked=true;">

Muss die Bezeichnung der Checkbox z.B. mindestens drei Zeichen lang sein? Oder sont irgendein Syntax-Fehler? :confused:

thx & Gruss,
poolpage
 
*Nie* eine Variable mit Ziffern beginnen, das erlaubt keine Programmiersprache, solltest du von PHP her kennen.

Wie lang, dürfte erstmal egal sein, aber die einzigen Zeichen, mit denen eine Variable und damit auch ein Elementname beginnen dürfte, sind:

-Buchstaben
-Unterstrich
-Dollarzeichen

Spätestens in der Anweisung
PHP:
document.gekauft.2.checked = true;
ist der Elementname ein Bezeichner in dem Fall und der muss den Variablenkonventionen entsprechen.

Dann sollte es auch klappen. :)

hth,
Geist

P.S.:
Das war mein letztes Posting dieses Jahr, versprochen. ;)
Guten Rutsch, man liest sich sicher...
 
Zuletzt bearbeitet:
Original geschrieben von Geist
Das war mein letztes Posting dieses Jahr, versprochen. ;)

ähhmmm... Meines auch ;)

äh - ups - ist ja schon nach Mitternacht... OKOK, mein letztes diese Nacht. :D

Im Ernst, danke für die Antwort, ich schau sie mir dann bei Tageslicht genauer an ;)

Gruss & alles Gute im neuen Jahr,

poolpage
 

Neue Beiträge

Zurück