Archivlink: javarea.de Forum > JavaScript > onclick und ondblclick
Vollständigen Link anzeigen: javarea.de Forum > JavaScript > onclick und ondblclick

Pages: [1] 2 3 ... nächste » ... Letzte »

geschrieben von René am 12.05.2006 - 11:13
Hallo,

brauche mal einen Denkanstoß.

PHP-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 

<?
function irgendwas(.....)
{
        
/* ...... */
        
else if (akt == 'right')
        {
            if ((
subakt == 'rightdir') || (subakt == 'rightfile'))
            {
                var 
arr = new Array();
                var 
anz document.forms[fil].elements[subakt].length;

                for (var 
0anzi++)
                    if (
document.forms[fil].elements[subakt][i].checked == true)
                        
arr.push(document.forms[fil].elements[subakt][i].value);

                
fil arr.join('[µ]');
            }

            if (
fil != '')
            {
                
elements['dir'].value verz;
                
elements['file'].value fil;
                
a_send true;
            }
        }
        
/* ...... */
}

/**/

is_checked false;

function 
box_checked(frmnam)
{
    
with (document.forms[frm])
        for (var 
0elements[nam].lengthi++)
            
elements[nam][i].checked = (is_checked) ? false true;

    
is_checked = (is_checked) ? false true
}
?>



HTML-Quelltext
1: 
<a href="javascript:void(0);" onclick="all_action('right', 'rightdir', 1, '');" ondblclick="box_checked(1, 'rightdir');" ...><img ... /></a>


Folgendes soll hier passieren bzw. passiert zur hälfte. Wenn keine Checkboxen checked sind und ich den Link doppelt anklicke werden alle Checkboxen auf checked gesetzt. Wenn ich jetzt wieder doppelt klicke weil ich die Checkboxen wieder auf unckecked setzen will, kommt erst die obere Funktion zum tragen und das Formular wird gesendet. Ein doppelter Klick ist also auch ein einfacher Klick wie könnte man das abfangen, anders machen um beide Funktionen auf dem einen Link zu haben?

geschrieben von Micha am 12.05.2006 - 13:57
Hallo René,

das Problem lässt sich leider nicht so einfach lösen, wie mir aus einem SELFHTML-Thread noch in Erinnerung geblieben ist. Du könntest mit setTimeout() das Ausführen bei onClick() etwas verzögern, um zu schauen, ob ein weiterer Klick gekommen ist.

EDIT
- http://forum.de.selfhtml.org/archiv....6/#m816734
- http://forum.de.selfhtml.org/archiv....3/#m608705

und weiter über die Suche im SELF-Forum

Micha


geschrieben von René am 13.05.2006 - 09:14
Hallo Micha,

einen Versuch habe ich mit einem setTimeout gemacht, das Ergebnis war aber nicht das was ich wollte. Habe das erstmal auf Eis gelegt.

Danke für die Links, haben mir die Richtung gezeigt.

geschrieben von weisnix am 13.05.2006 - 12:13
Hallo René

Ich weis nicht ob ich das so richtig verstanden habe. Zu dem ist das so ne Sachen mit dem Einfach- und Doppelklick.

Die Funktion ist einmal von der Einstellung am PC, der Doppelklickgeschwindigkeit und dann noch der Abarbeitung des Browsers von JavaScript abhängig.

Klar ist das der Script bei den heutigen Rechnern schneller aktiv ist als der Doppelklick.

Da geht es nur wenn ein Wert erzeugt wird. Ich habe da mal ein Beispiel konstruiert. Das kann mal getestet werden. Man sieht dort auch wie langsamere oder auch schnellere Mausklicks Auswirkung auf das Ergebnis haben.

Gruß

geschrieben von René am 13.05.2006 - 17:07

geschrieben von Micha am 13.05.2006 - 17:28
Hi,

ich hatte es selbst nie probiert, habe aber heute kurz nach einer Lösung gesucht und bin im FF (geht also im IE nicht!) auf das gekommen:

HTML-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
<html><head><title>Test</title></head><body>

<form>
<textarea cols="50" rows="20"></textarea>
<br><input type="button" value="Klick" onclick="checkClick(event)">

</form>

<script type="text/javascript">
var ts = 0;
function checkClick(e){
	if (!e){
		e = window.event;
	}
	var str = "";
	
	if (e.type == "click"){
		if ((e.timeStamp-ts)<1500){
			document.getElementsByTagName("textarea")[0].value = "doppelklick";
		}
		else {
			document.getElementsByTagName("textarea")[0].value = "normal";
		}
		ts = e.timeStamp;
	}
	
	
	/*
	for (var att in e){
		str += "Event."+att+" = "+e[att]+"\n";
	}
	document.getElementsByTagName("textarea")[0].value = str;
	*/
}

</script>
</body></html>


Die Idee ist, nicht nach einem Doppelklick zu suchen, sondern zwei onclick-events zu nutzen. Wie gesagt, es war und ist nur eine Idee, deren Realisierung leider nicht wirklich nutzbar im Moment ist...

Schöne Grüße Micha

geschrieben von René am 13.05.2006 - 18:40
Einen Schönheitsfehler gibt es allerdings im FF, Mozilla und Opera. Wenn keine Checkbox ausgewählt ist und ich einen Doppelclick (submit) mache wird die Funktion box_checked_timer trotzdem ausgeführt obwohl ich das setTimeout in der Funktion all_action lösche?

geschrieben von zippy am 13.05.2006 - 19:17
Wenn ich selber grad an was kränkle, kann ich gar nicht gut denken, aber folgende Idee:

Das "Test" aus der Test.htm selber mit ner Funktion verknüpfen, die das "Test" austauscht, mittels inner.HTML. Damit sollte es möglich sein, je nach Zustand des Formulars verschiedene javascript-starts über den Link zu veranlassen.

Leider zwickt und zwackt mich das header-Problem aus dem anderen Thread sosehr, dass ich grad nicht die Nerven dafür hab.

geschrieben von Micha am 13.05.2006 - 19:57

geschrieben von René am 13.05.2006 - 22:36
Hallo Micha,

das geht auch im IE und Opera, aber das wahre ist es auch nicht.

HTML-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
<html>
<head>

<script type="text/javascript">
<!--
ts = new Date().getTime();

function checkClick(e)
{
	if (!e)
		e = window.event;

	if (e.type == 'click')
	{
		var tss = new Date().getTime();

		with (document)
		{
			if ((tss - ts) < 1500)
				getElementsByTagName('textarea')[0].value = 'doppelklick ' + (tss - ts);
			else
				getElementsByTagName('textarea')[0].value = 'normal ' + (tss - ts);
		}

		ts = new Date().getTime();
	}
}
//-->
</script>

</head>
<body>

<form>
  <textarea cols="50" rows="20"></textarea><br>
  <input type="button" value="Klick" onclick="checkClick(event);">
</form>

</body>
</html>

geschrieben von Micha am 13.05.2006 - 22:51
Hallo René,

Zitat
 Original geschrieben von René am 13.05.2006 - 22:36
das geht auch im IE und Opera, aber das wahre ist es auch nicht.


Nein, das stimmt aber Ideen müssen erstmal verfolgt werden, um sie dann gezielt wieder verwerfen zu können ;) Es ist eben schwirig, zwei fast identische Event-Handler auf ein Objekt anzuwenden.

Dein Beispiel, welches ich um zwei Zeilen erweitert habe, geht nun übrigens bei mir im FF - hast es mal probiert?

Darf ich mal grunsätzlich fragen, wozu Du das benötigst?

Schöne Grüße Micha


geschrieben von René am 13.05.2006 - 22:52

geschrieben von René am 13.05.2006 - 23:05
Hallo Micha,

Zitat
 Original geschrieben von derletztekick am 13.05.2006 - 22:51

Nein, das stimmt aber Ideen müssen erstmal verfolgt werden, um sie dann gezielt wieder verwerfen zu können ;) Es ist eben schwirig, zwei fast identische Event-Handler auf ein Objekt anzuwenden.

das mit dem Zeitunterschied von mir geht auch mit IE und Opera oder habe ich das nein falsch verstanden.

Zitat
 Original geschrieben von derletztekick am 13.05.2006 - 22:51

Darf ich mal grunsätzlich fragen, wozu Du das benötigst?

Wenn du den WebExplorer in der jetztigen Version 2.4 mal ansiehst kann man z.B. die Rechte mehrerer Dateien gleichzeitig ändern. Jetzt liegen zwei Funktionen auf dem Link einmal alle auswählen bzw. abwählen und der eigendliche Submit.




geschrieben von Micha am 13.05.2006 - 23:21

geschrieben von René am 14.05.2006 - 01:17
Zitat
 Original geschrieben von derletztekick am 13.05.2006 - 23:21

Sei es drum, freut mich, das es geht auch wenn ich es komsch finde, das nach clearTimeout() der Integer noch vorhanden ist - was macht die Methode denn?

Eigendlich macht das clearTimeout() das was es sollte zumindest im IE. Im Mozilla, FF und Opera aber nicht dort läuft das setTimeout doch noch an/durch/???.



Powered by: JBB v.2.0.4 Copyright ©2000-2006, www.javarea.de.