"onclick" bei "<tr>" für Kindelemente von "<td>" unterdrücken
Benjamin
- javascript
Hallo Forum,
ich habe folgendes Problem: In unserem Intranet läuft eine Datenbankgestützte Oberfläche (mySQL/PHP). Es wird dabei über HTML eine seeehr lange und seeehr breite Tabelle ausgegeben, die einerseits die Daten in der Datenbanktabelle anzeigt, andererseits, indem sie Formularfelder enthält, die Möglichkeit zur Änderung bietet.
Zur besseren Übersicht habe ich in jedes <tr>-Element einen onclick-Eventhandler eingebaut, der beim Klicken eine Funktion aufruft, welche wiederum die Klasse des <tr>-Elementes austauscht - der Nutzer hat also die Möglichkeit, bestimmte Zeilen farbig hervorzuheben, damit er nicht "in der Zeile verrutscht".
Wie kann ich nun realisieren, dass der onclick-handler eben gerade _nicht_ aufgerufen wird, wenn ich in ein Formularfeld klicke um ihm den Fokus zu geben? (Sprich, der onclick-Handler soll _nur_ aufgerufen werden, wenn ich auf eine _freie_ Stelle in der Zeile klicke).
Ich hab keine Ahnung, wie ich sowas realisieren könnte, abgesehen davon, dass ich für jedes Unterelement von <tr> einen Handler definieren könnte, der die Klasse beim anklicken wieder zurücktauscht.
Info: Das ganze muss nur (sollte aber auch) im IE funktionieren, da hier niemand (außer ich ;) ) was anderes hat.
MfG Benjamin
Huhu Benjamin
Info: Das ganze muss nur (sollte aber auch) im IE funktionieren, da hier niemand (außer ich ;) ) was anderes hat.
In aktuellen Browsern reicht ein Attribut onclick="event.stopPropagation();" im Tag des Inputfeldes.
Informationen ob, und wenn ja wie, man das für den IE nachbauen kann müssten im Web zu finden sein.
Guck mal z.B. da unter "Cancel the event bubble" nach.
http://webfx.eae.net/dhtml/ieemu/eventobject.html
Liest sich zumindest vielversprechend ...
Viele Grüße
lulu
Hi Lulu,
also ich habe jetzt mal in die Input-Felder ein
onclick="event.stopPropagation();"
geschrieben. Funzt bei meinem Opera. Wenn ich
onclick="event.stopPropagation(); event.stopBubble = true;"
angebe, müsste es ja eigentlich auch im IE gehen - klappt aber nicht.
Frage: Ich setze "stopBubble" bei _dem_ Element auf true, dass nicht nach oben in die Elternelemente blubbern soll - also beim <input>-Element (welches Unterelement von <tr> ist). Oder ist es umgekehrt? Oder hab ich was falsch verstanden?
MfG Benjamin
Hi,
hat sich schon erledigt. Das Problem war, dass, wenn ich
onclick="event.stopPropagation(); event.stopBubble = true;"
schreibe, der IE nach "event.stopPropagation();" abbricht, da dies für ihn ein Fehler ist. Wenn ich nur
onclick="event.stopBubble = true;"
schreib, blubbert nix mehr.
Vielen vielen Dank.
MfG Benjamin