Eventhandler
lulu
- javascript
Huhu
ich suche eine Lösung für folgendes Problem:
Aus einer tabellarischen Ansicht mehrerer Datensätze soll man durch Klick auf die entsprechende Zeile einen einzelnen Datensatz auswählen können.
Das geht ja einfach per "onclick", allerdings können in der Zeile weitere Verweise, und auch Eingabefelder stehen.
Bei diesen soll der Event nicht "feuern".
Im Moment habe ich keine Idee wie, und ob, man das lösen kann ...
Hier ist eine Beispielseite dazu, da sollte es verständlicher sein.
http://www.maledivas.de/self/click.html
Danke für Eure Tipps
Viele Grüße
lulu
hi,
Das geht ja einfach per "onclick", allerdings können in der Zeile weitere Verweise, und auch Eingabefelder stehen.
Bei diesen soll der Event nicht "feuern".
dann könntest du versuchen, diese um ein eigenes onClick-attribut zu erweitern, dass dafür sorgt, dass dieser klick abgefangen und nicht weiter nach oben in der event-hierarchie durchgereicht wird.
gruß,
wahsaga
Huhu wahsaga
dann könntest du versuchen, diese um ein eigenes onClick-attribut zu erweitern, dass dafür sorgt, dass dieser klick abgefangen und nicht weiter nach oben in der event-hierarchie durchgereicht wird.
Das klingt logisch, funktioniert aber leider nicht.
Der "preview"-Link Auf der Beispielseite wird ja auch per "onclick"
geöffnet.
Viele Grüße
lulu
hi lulu,
warum soll das nicht funktionieren?
könnte mir in etwa so ein konstrukt vorstellen (ungetestet) :
*******************************
function stopEvent(e)
{
if(!e){e=window.event;}
if(e.stopPropagation)
{e.stopPropagation();}
else
{e.cancelBubble=true;}
}
*******************************
*******************************
<tr class="lightrow" onclick="alert('Zeile ausgewählt');">
<td>Argentinien (onclick)</td>
<td><input type="text" name="A"></td>
<td><a href="dummypopup.html" onclick="window.open(this.href,'preview','width=300,height=100'); stopEvent(); return false;" target="_blank">preview</a></td>
</tr>
*******************************
gruß
peter
hi,
scheint zu funktionieren, wenn die funktion mit:
stopEvent(event);
aufgerufen wird.
gruß
peter
Huhu Peter
e.stopPropagation();
Das war der richtige Pfosten für meinen kleinen
Gartenzaun ;-)
Vielen Dank, jetzt funktioniert es so wie ich mir das
vorgestellt habe.
Wen es interessiert
http://www.mozilla.org/docs/dom/domref/dom_event_ref32.html
http://www.w3.org/TR/2001/WD-DOM-Level-3-Events-20010823/events.html#Events-Event-stopPropagation
Viele Grüße
lulu
Mögliche Lösungsansätze wären ggf. unterschiedliche z-indexe.
Oder "löschen" des events nachdem er ausgelöst/ einmal ausgewertet
wurde.
Oder man steckt das in eine Funktion die auswertet wer das
Elternelement des Event ist. Oder .....?
den letzen ansatz wuerde ich weiter verfolgen
... onClick="Show_Detail(this)"
function Show_Details(element)
{
hier testen woher der event abgefeuert wurde
hth