Ik ben bezig met een tabel waarvan de kolommen resizable zijn. (client-side) Zie [rml][ JS] Checken of CTRL ingedrukt is met een onclick event[/rml]
De volgende functies moeten worden geïmplementeerd:
Nou loop ik tegen de volgende problemen aan:
Thanks!
De volgende functies moeten worden geïmplementeerd:
- Cursor moet zich aanpassen wanneer de gebruiker met de muis over de rand(/dichtbij de rand) van de table header cell <th> gaat, en weer terug naar normaal veranderen wanneer de muis niet dichtbij of over de rand is.
- Wanneer de cursor veranderd is in bovenstaande situatie moet de gebruiker de kolom kunnen resizen wanneer hij de muis ingedrukt houdt (onmousedown event)
JavaScript:
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
42
43
44
45
| resizableTable.prototype.resizeColumn = function( e, el ) { var el = (e) ? e.target : window.event.srcElement; var coords = this.getMouseCoords(e); var left = (el.offsetParent.offsetLeft != 0 ? el.offsetParent.offsetLeft : document.body.offsetLeft) + el.offsetLeft; var width = el.offsetWidth; var right = left + width; var prev = el.previousSibling; var next = el.nextSibling; var l = coords.mouseX - left; var r = right - coords.mouseX; if (((l >= 0) && (l <= 10) && (prev)) || ((r >= 0) && (r <= 15))) { el.style.cursor = 'e-resize'; el.width = coords.mouseX - left; return true; } else if (((r >= 0) && (l >= 5)) && (prev)) { el.style.cursor = 'e-resize'; prev.width = coords.mouseX - left; return true; } return false; } // [...] // Create resize behaviour ths[j].onmousedown = function(e) { this.onmousemove = function(e) { self.resizeColumn( e, this ); return false; } } // Cancel resize behaviour on mouseup & mouseout events ths[j].onmouseup = function(e) { this.onmousemove = function(e) { this.style.cursor = 'default'; return false; } } // [...] |
Nou loop ik tegen de volgende problemen aan:
- Als ik sleep en buiten de <th> kom kan de gebruiker niet meer resizen (de events van de <th> die gesleept werd vervallen namelijk omdat de muis niet meer boven dit element zit)
- Als ik te snel sleep gebeurt er hetzelfde als hierboven...
Thanks!
[ Voor 3% gewijzigd door Verwijderd op 29-08-2005 11:23 ]