Toon posts:

js: Insert tekst functie op positie cursos

Pagina: 1
Acties:
  • 115 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb een functie aangemaakt om in een rich text editor via een button een tab in te voeren:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function insertTab(rte) {
    var oRTE;
    if (document.all) {
        oRTE = frames[rte].document;
    } else {
        oRTE = document.getElementById(rte).contentWindow.document;
    }
    try {
        oRTE.focus();
        oRTE.body.innerHTML += "\t";
        oRTE.focus();
    } catch (e) {
    }
}


Met deze functie wordt de tab op het eind van de inhoud geplaatst. Nu wil ik dat er een tab op de positie van de cursor geplaatst wordt. Ik heb gezocht via google, maar wordt daar niks wijzer van.

  • Crayne
  • Registratie: Januari 2002
  • Laatst online: 17-03 13:41

Crayne

Have face, will travel

[google=javascript determine position cursor textarea]:?

Lijkt me toch dat daar wel degelijk goede links tussen staan.

En deze meneer doet exact wat jij wilt bereiken (insert at cursor). Al heeft hij zelf weer een ander probleem. ;)

[ Voor 73% gewijzigd door Crayne op 23-02-2007 10:02 ]

Mijn Library Thing catalogus


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Wij doen het hier op GoT ook. Heb je weleens in de code hier gekeken? ;)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

Topicstarter
Het is me gelukt met de volgende code wanneer ik op de tab-toets druk:

code:
1
2
3
4
5
if (document.frames["rte1"].event.keyCode == 9) {
        sel = document.selection.createRange();
        sel.text += "\t";
return false;
}


Alleen "\t" wordt niet gezien als een tab maar als een spatie. Heeft dat te maken omdat de inhoud van de textarea innerHTML is?

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

De inhoud van een textarea pas je aan middels het .value attribuut

Intentionally left blank


  • semicolon
  • Registratie: Mei 2004
  • Niet online
crisp schreef op vrijdag 23 februari 2007 @ 11:09:
De inhoud van een textarea pas je aan middels het .value attribuut
pssst,
Heb je al eens gekeken naar execCommand in combinatie met het commando insertHTML?

:D/-<


Verwijderd

Topicstarter
crisp schreef op vrijdag 23 februari 2007 @ 11:09:
De inhoud van een textarea pas je aan middels het .value attribuut
Het probleem is niet dat de inhoud niet aangepast wordt, maar dat "\t" als een spatie gezien wordt. De inhoud van de 'textarea' is namelijk html (rich text editor). Wanneer ik de .value optie gebruik, gebeurt er helemaal niets.
Max v W schreef op vrijdag 23 februari 2007 @ 11:13:
[...]


pssst,

[...]


Heb je al eens gekeken naar execCommand in combinatie met het commando insertHTML?
Daar heb ik idd al naar gekeken, alleen welk execCommand moet ik dan gebruiken?

[ Voor 80% gewijzigd door Verwijderd op 23-02-2007 11:25 ]


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Noem het dan geen textarea ;)

Maar tabs in HTML worden alleen gerendered voor elementen met white-space: pre

Intentionally left blank


Verwijderd

Topicstarter
crisp schreef op vrijdag 23 februari 2007 @ 11:19:
Maar tabs in HTML worden alleen gerendered voor elementen met white-space: pre
Met white-space: pre; blijft de invoer van "\t" maar 1 spatie

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Verwijderd schreef op vrijdag 23 februari 2007 @ 12:05:
[...]


Met white-space: pre; blijft de invoer van "\t" maar 1 spatie
Ik neem aan dat je weet dat ik het over CSS heb?

Intentionally left blank


Verwijderd

Topicstarter
Ja ;) , ik heb dit:

code:
1
2
3
4
5
6
7
8
9
10
<style>
body {
   white-space: pre; 
   background: #FFFFFF;
   margin: 0px;
   font-family: Verdana; 
   font-size: 12px; 
   padding: 5px;
}
</style>


Met dit geeft "\t" 1 spatie weer.

Verwijderd

Topicstarter
Niemand?
Pagina: 1