01. marts 2005 - 16:58Der er
13 kommentarer og 1 løsning
Sætte tekst uden om markeret tekst
Jeg skal have lavet mig et meget simpelt program, hvor man skal kunne indtaste noget tekst i en tekstboks, og så markere en del af teksten derefter trykke på en knap og så skla der komme noget bestem uden om den markerede tekst.
Det lyder lidt indviklet, men jeg giver lige et eksempel:
I tekstboksen står der: "Hej med dig, eksperten.dk er mega sejt, vi elsker det alle"
Så markerer man følgende(>><<): "Hej med dig, >>eksperten.dk<< er mega sejt, vi elsker det alle"
Så trykker man på en knap, og så skal det (f.eks.) se sådan her ud: "Hej med dig, <b>eksperten.dk</b> er mega sejt, vi elsker det alle"
function addTags(before, after) { var txt = eval(Selection.getFocus()); if (!txt) return var st = Selection.getBeginIndex(); var sl = Selection.getEndIndex(); txt.text = txt.text.substring(0,st)+before+txt.text.substring(st,sl)+after+txt.text.substring(sl); Selection.setSelection(st,sl+before.length+after.length); } Key.addListener(this); function onKeyUp() { if (Key.isDown(Key.CONTROL) && String.fromCharCode(Key.getCode()) == "B") { addTags("<b>", "</b>"); } }
Så kan du sidde og skrive i dit tekstfelt og så trykke Ctrl+B og så kommer der "<b>" og "</b>" rundt om det markerede. Du kan ikke (nemt) lave det med knapper, for når du trykker på knappen mistes informationen om, hvad du har markeret i tekstfeltet - desvæære (jeg har lige prøvet mig frem).
Herligt barklund :D, det virker fint. Men jeg har bare lige et spørgsmål mere.
Hvordan sætter jeg så flere muligheder ind? har prøvet bare at sætte en if betingelse mere ind, men det virker ikke. Er ikke lige uber actionsscript nørd, men her er hvad jeg prøvede:
function onKeyUp() { if (Key.isDown(Key.CONTROL) && String.fromCharCode(Key.getCode()) == "B") { addTags("<b>", "</b>"); }else if (Key.isDown(Key.CONTROL) && String.fromCharCode(Key.getCode()) == "I") { addTags("<i>", "</i>"); } }
Jeg kan skrive den lidt om, men funktionaliteten er den samme:
function onKeyUp() { if (!Key.isDown(Key.CONTROL)) return; switch(String.fromCharCode(Key.getCode())) { case "B": addTags("<b>", "</b>"); break; case "I": addTags("<i>", "</i>"); break; } }
Jeg har tacklet det med at man mister focus... Det handler bare om at huske hvor selection sidst var, hver gang tekstfeltet mister focus... et par tjeks og den er klaret - lidt fesen løsning men den eneste...
Hm, jeg synes ikke at kunne få getBeginIndex og getEndIndex når fokus var mistet - selvom jeg vidste, hvor fokus kom fra. Så skulle man registrere disse i en enterFrame eller noget i den stil.
Altså nu virker det nogenlunde, men der er et problem med CTRL+B nu. Det er meget underligt, for når jeg "tester" movie, direkte fra Flash virker det sådan set fint nok med begge muligheder.
Når jeg så derimod exporterer filmen og bruger CTRL+B, så forsvinder teksten der er makeret, men "<b>" og "</b>" kommer alligevel.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.