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 i = 0; i < anz; i++)
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(frm, nam)
{
with (document.forms[frm])
for (var i = 0; i < elements[nam].length; i++)
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 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/???.
|
|