• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Unterscheiden - Langer Buttondruck / Kurzer Buttondruck

Tropaion

New member
Hallo Com,

ich möchte gerne wenn man auf einen Button kürzer als 1s drückt, dass dann eine Variable +10 raufgezählt wird.
Wenn man länger als 1s drückt, soll jede Sekunde die gedrückt ist die Variable um +5 raufgezählt werden.

Ich suche jetzt schon länger nach so einer Funktion, habe jedoch nichts derartiges gefunden.

Würde mich freuen wenn mir jemand sagen kann wie man so etwas realisieren kann.

Danke und Mfg,

Tropaion
 
*freigeschaltet*

dafür gibt es in JS Eventhandler. In diesem Fall käme onkeydown und onkeyup in Frage.
Hälst beim down und up jeweils die aktuelle Epoch über das Date Objekt fest und ermittelst beim up die Sekunden zwischen beiden.
 
Da werden die neuen Werte aber erst berechnet wenn man denn Button wieder loslässt oder?
Ich brauch das aber in "Echtzeit" also sekündlich.

Ziel:
Anfahren einer Kameraposition.

Funktioniert onkeydown und onkeyup auch mit Tastatur?

Ich habe auch ein Code um die Tastatur abzufragen, jedoch geht das auch nicht mit Zeit.
HTML:
document.onkeydown = function(event) {
	if (event.keyCode == 87) {
		alert('W');
		event.cancelBubble = true;
		event.returnValue = false;
	}
	if (event.keyCode == 65) {
		alert('A');
		event.cancelBubble = true;
		event.returnValue = false;
	}
	if (event.keyCode == 83) {
		alert('S');
		event.cancelBubble = true;
		event.returnValue = false;
	}
	if (event.keyCode == 68) {
		alert('D');
		event.cancelBubble = true;
		event.returnValue = false;
	}
	return event.returnValue;
}

Danke und Mfg,
Tropaion
 
Zuletzt bearbeitet von einem Moderator:
Hatte mich der Aufgaber auch mal vor einem Jahr gestellt
Code:
function plusEins(input,wait){
   current		= parseFloat(document.getElementById(input).value);
   addition	= current + 1;
   if(addition <= 100){ document.getElementById(input).value = parseFloat(addition); }
   else{ clearTimeout(autoplus1); clearTimeout(autoplus2); }
   autoplus1	= setTimeout(function(){
      autoplus2	= setTimeout(function(){ plusEins(input,0); }, 100);
   }, wait);
}
Denke mein Codesnippet kann dir da weiterhelfen, ist in Echtzeit, man drückt einmal drauf, wenn man länger als 1,5 Sekunden draufhält tickt er im zehntelsekundentackt +1 weiter
Code:
ontouchstart=\"plusEins('personen','1500');\" ontouchend=\"clearTimeout(autoplus1);

- - - Aktualisiert - - -

hatte es für ne webapp gemacht also touch, kannste auch mit mousedown/up oder keydown/up
 
Hallo TecEye,
habe mir jetzt deinen Code genauer angesehen, verstehen ihn aber leider nicht ganz... .

Würde es dir etwas ausmachen ihn mir genauer zu erläutern?

Vielen Dank und Mfg,
Tropaion
 
bei dem ontouchstart-event gibst du die ID deines Input-Feldes mit und die millisekunden nach denen automatisch getickert wird.
Hier fragen wir also die id personen ab (da steht dann meist schon ein wert drin) und sagen nach 1,5Sekunden halten wird getickert
So die Funktion holt sich mit der variablen current den aktuellen Wert des Inputs und rechnet da einen drauf.
Ich hatte damals eine Grenze eingebaut von 100, bei dann wahrscheinlich 360 (grad oder dein bereich halt).
Wenn kleiner der Maximalwert, dann dann wird das Input-Feld mit dem neuen Wert aktualisiert. Wenn größer oder gleich, dann beendet er alles.
gleichzeitig statet ein Timeout mit der zuvor definierten zeitgrenze von 1500.
Nach ablauf dieser 1,5Sekunden startet der Timeout autoplus2 alle Zehntelsekunde die Funktion plusEins, allerdings ohne die Wartezeit und erhöht somit wieder plus 1
bis du losläßt und ontouchend den Timeout beendet

- - - Aktualisiert - - -

Hab es dir zur veranschaulichung mal mit onmousedown gefiddelt Edit fiddle - JSFiddle

Sorry war n Fehler drin, jetzt Edit fiddle - JSFiddle
 
Zuletzt bearbeitet:
Danke!

Hab das auf jsfiddle getestet aber es funktioniert nicht so richtig bei mir.
Kurzer klick geht -> +1
Wenn ich lange klicke fängt er an, hinaufzuzuzählen. Jedoch wenn ich wieder runtergehe bleibt er nicht stehen und zählt einfach bis 100 weiter.
 
Zurück
Oben