Toon posts:

[Javascript/HTML] Tab gebruiken in een textarea

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben momenteel met een online editor bezig voor PHP bestanden. Nu is het zoals iedereen wel gewend is, voor het inspringen de tab toets te gebruiken. Alleen als je nu een tab indruk gaat ie naar het volgende item in de tabindex (bijvoorbeeld een knop).

Is er een mogelijkheid om dit uit te zetten / af te vangen?

Verwijderd

als ik het goed heb kun je toetsen als tab, delete en de F toetsen niet afvangen zoals je dat normaal zou doen met event.keyCode. De oplossing: in html zou ik het niet weten, waarschijnlijk kun je de tab wel afvangen in flash en de waarde ervan opslaan.

Of je zou het ranzig moeten maken met een onBlur waarbij je kijkt of die onBlur is ontstaan door een click event, is dat niet zo dan was het waarschijnlijk een Tab en moet je weer een focus aanroepen.

  • bRight
  • Registratie: Juli 2000
  • Laatst online: 27-11-2024

bRight

digitaal

Volgens mij wel hoor..

JavaScript:
1
2
3
4
5
6
7
8
function keyDown() {
    var keycode = event.keyCode
        if (keycode == 9) {
            // tab ingedrukt
        }
    }
}
document.onkeydown = keyDown

[ Voor 13% gewijzigd door bRight op 22-09-2003 15:35 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 15:30

crisp

Devver

Pixelated

Even werkend voorbeeldje (IE only, maar is met wat truuken ook wel werkend te krijgen in Mozilla - je moet dan echter onkeypress gebruiken omdat onkeydown in Moz niet te cancellen is):

HTML:
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
<html>
<head>
<script type="text/javascript">

var target = null;
function getTarget(el) {
  target = el;
}
function storeCursor(el) {
  if (document.all && el.createTextRange) {
    el.cursorPos = document.selection.createRange().duplicate();
  }
}

function dokeydown() {

  if (target && event.keyCode == 9) {

    target.cursorPos.text = '\t';

    // cancel event
    event.cancelBubble = true;
    event.keyCode = 0;
    event.returnValue = 0;

    target.focus();
    storeCursor(target);

  }

}

</script>
</head>
<body>
<textarea style="height:200px;width:300px;"
  onkeydown="dokeydown()"
  onfocus="getTarget(this)"
  onselect="storeCursor(this)"
  onkeyup="storeCursor(this)"
  onclick="storeCursor(this)"></textarea>
</body>
</html>


In feite kan je bijna alle keys afvangen, inclusief functionkeys ;)

Intentionally left blank


Verwijderd

Topicstarter
Bedankt :)