Andreas Nagel: Button soll ondblclick ohne onclick Funktion aufrufen

Hallo zusammen

ach wieso können denn Benutzerereignisse unterschieden werden können wenn Sie aber doch garnicht zu unterscheiden sind? Es wurde die Maustaste gedrückt :-( Und dann ist ja toll zwei Abfragemöglichkeiten zur Verfügung zu stellen. Aber geklickt wurde ja so oder so.

Und es würde geniales möglich werden wenn Buttons mit 2 Funktionen belegt werden könnten. 1x Klick scroll wie eh und je bis zum Seitenanfang und 2x Klicken scroll bitte nur zum Start der einem Link untergeordneten Linkliste.

Und da es sich um zwei unterschiedliche Linklisten innerhalb eines Fensters handelt, wäre ich absolut begeistert wenn es möglich wäre zwischen 1x und 2x Klicken unterschieden zu können. OK ich las schon davon es mit einem Timer abzufragen wie oft denn geklickt wurde. Aber wie das aussehen soll bin ich mir noch nicht im klaren. Denn ein Button soll auch bei einem Klick den nebenstehenden Link zur Bearbeitung markieren und beim Doppelklick die untergeprdneten öffnen können.

Und so sehe ich darin das Problem, dass die Markieren Funktion eh schon Zeit in Anspruch nimmt und ich ja per Timer erst einmal eine Zeit lang warten müsste bis und ob denn ein zweites Mal geklickt wurde.

Also würde ich mich über Hilfe sehr freuen wie ich meinen Buttons die 2 Funktionen zuweisen könnte.

Danke Gruß Andreas

  1. Hallo,

    aus dieser abstrakten Beschreibung werde ich nicht so richtig schlau über deinen Anwendungsfall. Am besten zeigst du mal ein Online-Beispiel.

    Und da es sich um zwei unterschiedliche Linklisten innerhalb eines Fensters handelt, wäre ich absolut begeistert wenn es möglich wäre zwischen 1x und 2x Klicken unterschieden zu können. OK ich las schon davon es mit einem Timer abzufragen wie oft denn geklickt wurde. Aber wie das aussehen soll bin ich mir noch nicht im klaren.

    Einen Timeout setzen und beim Ablauf des Timeouts (d.h. beim Feuern der Callback-Funktion) prüfen, ob zwischendurch noch einmal geklickt wurde (d.h. der click-Handler noch einmal aufgerufen wurde, während der Timeout schon lief).

    Denn ein Button soll auch bei einem Klick den nebenstehenden Link zur Bearbeitung markieren und beim Doppelklick die untergeprdneten öffnen können.

    Und so sehe ich darin das Problem, dass die Markieren Funktion eh schon Zeit in Anspruch nimmt und ich ja per Timer erst einmal eine Zeit lang warten müsste bis und ob denn ein zweites Mal geklickt wurde.

    Wie sieht der Ansatz aus, den du ausprobiert hast? Zeige mal bitte den Code, mit dem du es bisher versucht hast.

    Mathias

    1. Hallo zusammen

      vielen Dank für Eeuer Interesse und absolutes Sorry das ich mich erst wieder so spät melde.

      Es ist aber auch so, dass ich noch nix zu zeigen habe und code bräuchte ich doch auch nicht zteigen. Denn ich schreibe ja schon das es sich stets um Buttons mit 2 Funktionen handelt und um welche Funktionen es sich handelt mag ich villeicht nicht ganz wissen wie ich das verständlich beschreiben soll.

      Aber ich beschreibe ja das ein Button bei einem Klick einen Link markieren soll und beim Zweiten weitere Links einblenden soll. Und das ich CodeZeilen ausführe die einen Timer starten verbraucht doch auch schon Rechenleistung. Und so müsste man doch erst einmal 1 2 Millisekunden warten müssen bis überhaupt Code gestartet wird, was unter einem langsamen Rechner doch sehr lange dauern könnte. Und bekommt der überhaupt mit das 2x geklickt wurde?

      Und wenn ja bitte zeigt mir ein Beispiel.

      Ich danke Euch für Eure Hilfe Gruß Andreas

      1. Es ist aber auch so, dass ich noch nix zu zeigen habe und code bräuchte ich doch auch nicht zteigen.

        Äh? Wir haben dir einen Lösungsansatz gegeben, warum probierst du den nicht aus, indem du ihn versuchst in Code umzusetzen?

        Und das ich CodeZeilen ausführe die einen Timer starten verbraucht doch auch schon Rechenleistung. Und so müsste man doch erst einmal 1 2 Millisekunden warten müssen bis überhaupt Code gestartet wird, was unter einem langsamen Rechner doch sehr lange dauern könnte.

        Das sollte kein Problem darstellen.

        Und bekommt der überhaupt mit das 2x geklickt wurde?

        Ja.

        Und wenn ja bitte zeigt mir ein Beispiel.

        http://jsfiddle.net/7rev3/

        Mathias

        1. Und bekommt der überhaupt mit das 2x geklickt wurde?

          Ja.

          Und wenn ja bitte zeigt mir ein Beispiel.

          http://jsfiddle.net/7rev3/

          Mathias

          Nicht böse gemeint... aber warum so kompliziert?

          Man kann doch auch einfach inline (ja, ist nicht gerade optimal) den Klick behandeln:

          <button id="button" onclick="return false()" ondblclick="yourEvent()">Button</button>

          Hab's auf die Schnelle nur mit FF getestet, es läuft.

          Dein fiddle hat zudem ein kleines Problem: der Doppelklick muss mit ziemlich brachialer Geschwindigkeit durchgeführt werden (was man aber wohl anpassen kann), während der Event-Handler über den Browser auf die Einstellungen des Computers zurückgreift, wo evtl. der Eine oder Andere seine Toleranzzeit verringert hat.

          mit einem Salut,

          der Regexorzist

  2. Hi,

    ach wieso können denn Benutzerereignisse unterschieden werden können wenn Sie aber doch garnicht zu unterscheiden sind? Es wurde die Maustaste gedrückt :-( Und dann ist ja toll zwei Abfragemöglichkeiten zur Verfügung zu stellen. Aber geklickt wurde ja so oder so.

    Und es würde geniales möglich werden wenn Buttons mit 2 Funktionen belegt werden könnten. 1x Klick scroll wie eh und je bis zum Seitenanfang und 2x Klicken scroll bitte nur zum Start der einem Link untergeordneten Linkliste.

    deine Geschichte hört sich ziemlich konfus an, aber ich habe den Eindruck, du möchtest auf einen Einfach- und einen Doppelklick mit der Maus unterschiedlich reagieren.

    Prinzipiell ist das möglich; allerdings wird auch beim Doppelklick immer zuerst das Einzelklick-Ereignis signalisiert (onclick), und einen Moment später das zweite Klick-Ereignis (ondblclick).

    Daraus folgt:

    Entweder du gehst den Weg, den molily schon andeutet. Das heißt, beim ersten Klick löst du noch keine Reaktion aus, sondern verzögerst sie erst eine angemessene Zeitspanne. Tritt in dieser Zeit der zweite Klick ein, verwirfst du das erste Event und führst die vorgesehene Doppelklick-Aktion aus.
    Problem dabei: Du weißt nicht, welche Zeitspanne das System des Besuchers als Maß für die Erkennung eines Doppelklicks nimmt, musst deine Verzögerung aber darauf abstimmen, weil sonst seltsame Effekte entstehen.

    Besser ist allerdings, sich an etablierte Design-Richtlinien zu halten. Das bedeutet zum Beispiel, dass Einzel- und Doppelklick-Aktion eine logische Abfolge ergeben sollten. Schau dir etwa den Windows-Explorer an (gilt für viele andere Dateimanager auch): Beim ersten Klick wird ein Objekt markiert, beim zweiten Klick geöffnet. Das Markieren ist sozusagen die Vorstufe zum Öffnen.
    Wenn du eine solche Logik in deine Aktionen bringen kannst, brauchst du dich auch um die Zeitabstände nicht mehr zu kümmern.

    Und da es sich um zwei unterschiedliche Linklisten innerhalb eines Fensters handelt, wäre ich absolut begeistert wenn es möglich wäre zwischen 1x und 2x Klicken unterschieden zu können. OK ich las schon davon es mit einem Timer abzufragen wie oft denn geklickt wurde. Aber wie das aussehen soll bin ich mir noch nicht im klaren. Denn ein Button soll auch bei einem Klick den nebenstehenden Link zur Bearbeitung markieren und beim Doppelklick die untergeprdneten öffnen können.

    Ich würde sagen, diese Funktionen eignen sich nicht für die Unterscheidung nach Einzel- oder Doppelklick. Da würde ich lieber separate Buttons vorsehen.

    So long,
     Martin

    --
    Ich stehe eigentlich gern früh auf.
    Außer morgens.
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(