Ik probeer een scriptje te schrijven dat elke textarea van een bepaalde class omzet naar een soort UBB editor voor binnen mijn CMS. Ik ben nu zover dat alle textarea's in een pagina worden bekeken en zonodig worden vervangen door een editor-div. Volgende op de lijst: een detectKey functie aan die textarea's hangen.
De bedoeling: als ik in een textarea met class "form-textarea" iets intik, wil ik op elke onkeydown zien welke key ik intik, zodat ik hier vervolgens functies aan kan hangen.
Geprobeerd: op diverse manieren in regel 27 geprobeerd om de detectKey te attachen aan de textEditor (this.textarea.detectKey, this.detectKey, etc.)
Resultaat: als ik in de textarea iets intik, gebeurt er niets.
Wat doe ik verkeerd?
De bedoeling: als ik in een textarea met class "form-textarea" iets intik, wil ik op elke onkeydown zien welke key ik intik, zodat ik hier vervolgens functies aan kan hangen.
Geprobeerd: op diverse manieren in regel 27 geprobeerd om de detectKey te attachen aan de textEditor (this.textarea.detectKey, this.detectKey, etc.)
Resultaat: als ik in de textarea iets intik, gebeurt er niets.
Wat doe ik verkeerd?
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
46
47
48
49
50
51
52
53
54
55
| var Editor = { version : "1.0 beta", init : function() { var textareaNodes = document.getElementsByTagName('textarea'); var theTextareas = [], thisTextarea, i = 0; i = 0; while ((thisTextarea = textareaNodes[i++])) { if (hasClass(thisTextarea, 'form-textarea')) { new this.textEditor(thisTextarea); } } }, textEditor : function(textarea) { var parent = textarea.parentNode, nextsibling = textarea.nextSibling; var container = createNode('div', {'class' : 'textEditor ' + textarea.id}); this.textarea = parent.removeChild(textarea); this.textarea.className = 'editor-textarea' container.appendChild(this.textarea); if (nextsibling) { parent.insertBefore(container, nextsibling); } else { parent.appendChild(container); } this.textarea.detectKey; this.textarea.focus(); }, detectKey : function() { var theHandler = this.handleKey; if (document.all) { this.textarea.onkeydown = function(e) { theHandler.call(self, e); } } else { this.textarea.onkeypress = function(e) { theHandler.call(self, e); } } }, handleKey : function(e) { if (!e || e == null) var e = window.event; if (e.keyCode) key = e.keyCode; else if (e.which) key = e.which - 32; alert(key); } } addLoadEvent(function () { Editor.init(); }); |
"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."