Benjamin: "onclick" bei "<tr>" für Kindelemente von "<td>" unterdrücken

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

  1. 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

    --
    bythewaythewebsuxgoofflineandenjoytheday
    1. 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

      1. 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