[JavaScript] geselecteerde tekst in textarea

Pagina: 1
Acties:

  • marcrenzo
  • Registratie: September 2001
  • Laatst online: 03-09 00:02
Ik heb nu de volgende code om geselecteerde tekst in een textarea te omsluiten met <b></b> tags.
code:
1
2
3
4
5
6
function maakVet(){
  if(document.selection.createRange().text){
  boldstring = '<b>'+document.selection.createRange().text+'</b>';
  document.selection.createRange().text = boldstring; }
  else{ alert('Er is geen text geselecteerd'); }
  }

is het nu ook mogelijk om de geselecteerde tekst (dus wel met bold tags maar niet meegeselecteerd) te controleren of hij <b></b> om zich heen heeft en om deze daarna te verwijderen.

Ik wil namelijk zoiets maken dat wanneer men op de knop van maakvet klikt dat hij dan de tags niet laat zien, maar de hele textarea value apart in een string bewaart en dan wanneer men de tekst weer selecteerd in de textarea de bold functie weer uitschakeld wordt.

Er wordt een realtime output gemaakt onder de textarea zodat men kan zien welke tekst bold is.

Ik hoop dat jullie het zo snappen, want ik leg het misschien wat dom uit. :)

(Het is voor een intranet, het hoeft alleen maar te werken in IE5.5 en hoger)

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02-2025

SchizoDuckie

Kwaak

Daar hebben ze string.indexOf voor uitgevonden :)

Let wel op: Dit soort grappen werkt errug smack met selection.createRange. Mijn ervaring is dat IE het leuk vindt om zelf z'n tags af te sluiten op het punt waar je selectie stopt, ik heb hier alleen nog niet echt een goede logica in gevonden, dus tot die tijd zal je er iets omheen moeten fix0ren waarschijnlijk...

Stop uploading passwords to Github!


  • marcrenzo
  • Registratie: September 2001
  • Laatst online: 03-09 00:02
Ik heb dus eigenlijk een string met tags, laten we zeggen

hallo dit is <b>vette tekst</b>

dit is dan de realtime output en een string die dan in de textarea staat,

hallo dit is vette tekst.

nu moet ik dat verhaal van hierboven toepassen door de tekst in de tekstarea te selecteren en dan checken of er in de outputstring tags omheen staan.

  • 2
  • Registratie: November 2000
  • Laatst online: 31-03 13:52

2

Misschien met document.selection.createRange().HTMLtext

Daarmee krijg je dus de html ook, niet alleen de tekst zoals bij document.selection.createRange().text

Maar het blijft listig denk ik hoor.

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Bekijk de code van mijn HTML editor eens :)
Staat vast wel wat nuttigs in.


Ok je doet bijv.
code:
1
2
3
4
5
6
7
8
9
10
11
12
STRINGWAARALLESINSTAAT = 'Lala\n<b>Test</b>\nlala';
text = 'Test'; ( geselecteerd )

s = STRINGWAARALLESINSTAAT;
text = SelectedText;
if (s.substr(s.indexof(text) - 3, s.indexof(text)) == '<b>')
{
  HAAL TAG WEG
} else
{
  PLAATS TAG
}

En dit kan je vast wel zo mooi maken dat je makkelijk meerdere tags ondersteund.
Zoiets??


En de achterste...
code:
1
2
3
4
5
6
7
8
9
s = STRINGWAARALLESINSTAAT;
text = SelectedText;
if (s.substr(s.indexof(text) + text.length, s.indexof(text) + text.length + 4) == '</b>')
{
  HAAL TAG WEG
} else
{
  PLAATS TAG
}

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router