2016-06-20 23 views
1

Ich habe ein benutzerdefiniertes Widget mit einem onClick Handler. Das Problem ist, wenn der Benutzer auf das Element doppelklickt, wird ein doppelter Aufruf auch für den zweiten Klick ausgelöst. Wurde versucht, es zu vermeiden, indem onDoubleClick Handler verwendet, auf Doppelklick der Anruf geht in diesen Handler aber es geht nur nach der Ausführung onClick. So passiert immer noch der doppelte Anruf.GWT - Handle beide Doppelklick und einen einzigen Klick auf das gleiche Element

Haben Lösungen mit einem Timer in auf doppelte doppelte Anforderungen zu vermeiden Javascript gesehen. Ist es möglich, eine ähnliche Sache in GWT zu haben?

Oder gibt es eine andere bessere Möglichkeit, die doppelte Anfrage auf Doppelklick für Elemente in GWT zu vermeiden?

Antwort

0

How to prevent DoubleSubmit in a GWT application?

Die Antwort in dem oben angegebenen Link helfen würde, in für eine Schaltfläche Doppelklick Handhabung.

Aber wenn sie ein benutzerdefinierter Widget und .setEnabled (false) funktioniert nicht, dass wir einen statischen boolean Variable Zustand zu überprüfen, ob sein falsch dann und setzt damit haben können es zu wahr Wenn Sie einmal darauf klicken, setzen Sie es wieder auf false auf Erfolg. Bei einem Doppelklick auf wird der Werttrue sein und die if-Bedingung würde fehlschlagen.

1

Ersetzen Sie das Widget durch ein "animiertes Bild zum Laden des Spins", solange das Widget dies tut. Sobald es fertig ist, ersetzen Sie es wieder mit dem Widget.

Da das Bild den Clickhandler nicht enthält, wird der zweite Klick nicht empfangen.

1

Ich verhindere den Doppelklick, indem ich die aktuelle Zeit in Millisekunden nehme und mit der letzten Behandlung dieser Methode überprüfe. Wenn der Abstand zwischen dem ersten und zweiten Klick weniger als eine Sekunde beträgt, wird der zweite Klick verhindert.

long lastClick = 0; 
if (lastClick < System.currentTimeMillis() - 1000) 
{ 
    // do logic 
} 
lastClick = System.currentTimeMillis();