Avatar billede nielsbrinch Nybegynder
23. juni 2004 - 08:41 Der er 23 kommentarer og
1 løsning

Indsæt linjeskift i textarea

Det er ikke så nemt som det lyder. Normalt kan man indsætte \n i et textarea for at få linjeskift, men da jeg preparser html'en bliver \n til et linjeskift i selve html-koden i stedet for i textareaet.

Jeg har altså brug for et tegn jeg kan indsætte i min html som browseren ikke æder. Eventuelt en måde at escape \n på så browseren lader det være.
Avatar billede nielsbrinch Nybegynder
23. juni 2004 - 08:46 #1
Æhh, det hører med til historien at al min html er i een lang linje og det kan jeg ikke lave om på.
Avatar billede nielsbrinch Nybegynder
23. juni 2004 - 08:47 #2
Hvis jeg skriver \\n kommer der til at stå \n direkte i textarea'et, altså ikke et linebreak.
Avatar billede fennec Nybegynder
23. juni 2004 - 08:51 #3
Dette er et gæt, men prøv med chr(13).
Avatar billede fennec Nybegynder
23. juni 2004 - 09:01 #4
Glem det.....
chr() er ikke en valid JavaScript metode. Det troede jeg.
Avatar billede nielsbrinch Nybegynder
23. juni 2004 - 09:07 #5
Okay. Ellers mange tak. Jeg er i øvrigt kommet frem til en alternativ løsning. Jeg gemmer \\n i mit textarea og så retter jeg \\n til \n med JavaScript. Det virker.
Avatar billede nielsbrinch Nybegynder
23. juni 2004 - 09:07 #6
Men jeg vil stadig gerne høre "den rigtige" løsning hvis der findes en.
Avatar billede Slater Ekspert
23. juni 2004 - 09:29 #7
Jeg prøvede lige at skrive nogle få linjer i et test-dokument. Det virker fint her, linjeskiftet kommer.


<textarea id="hus">
</textarea>

<script>
document.getElementById('hus').value = "jaja\nwololo"
</script>
Avatar billede Slater Ekspert
23. juni 2004 - 09:30 #8
Hvad er der der ikke virker? Er det preparser funktionen, for så smid da lige den?
Avatar billede nielsbrinch Nybegynder
23. juni 2004 - 09:31 #9
Jaja selvfølgelig virker det, men jeg sætter jo \n direkte ind i html-strengen som browseren parser. Det bliver altså til et linjeskift inde i text-area'et og da mit program samtidig æder alle egentlige linjeskift og sætter html'en i een lang linje kan det ikke bruges.
Avatar billede nielsbrinch Nybegynder
23. juni 2004 - 09:33 #10
Det har jeg ikke så meget lyst til, viperine, for det er over 400 linjers indforstået kode.

Jeg har bare brug for et tegn som textarea opfatter som linjeskift. Meget ala chr(13) hvis det havde fungeret.
Avatar billede Slater Ekspert
23. juni 2004 - 09:35 #11
Ah, sorry.

Og en .replace("\n","<br>") kan ikke gøre det?
Avatar billede nielsbrinch Nybegynder
23. juni 2004 - 09:43 #12
Så står der bare <br> i textarea'et :(
Avatar billede Slater Ekspert
23. juni 2004 - 09:47 #13
Der findes en funktion i JavaScript, der gør det samme som Chr(13).
Den hedder String.fromCharCode(13), men den gør nøjagtig det samme som "\n", så det skulle da ikke gøre noget.

Jeg synes det er meget svært at forestille sig uden noget kode. Du kunne ikke bare smide de 3-5 vigtigste linjer ind her, vel?
Avatar billede nielsbrinch Nybegynder
23. juni 2004 - 09:52 #14
viperine, her er en linje i min preparser (i C#). node.InnerText indeholder indholdet af mit textarea. Jeg kan nu finde alle linebreaks (\n) som jeg skal lave om til et andet tegn så mit textarea opfatter det som et linebreak uden browseren opfatter det som et linebreak. Der skal altså ikke blandes JavaScript ind i det.

node.InnerText = node.InnerText.Replace("\n", "\\n");
Avatar billede Slater Ekspert
23. juni 2004 - 09:57 #15
Jeg er bange for at begynde at lyde nedsættende snart, for jeg forstår stadig ikke helt hvad det er du vil.

Vil du have en streng uden linjeskift, men med nogle andre tegn i stedet, som så skal  kunne sættes ind i et textarea, hvor de tegn så bliver til linjeskift?
Avatar billede nielsbrinch Nybegynder
23. juni 2004 - 10:06 #16
ja
Avatar billede Slater Ekspert
23. juni 2004 - 10:50 #17
Så må du vel bare vælge et tegn du vil bruge som linjeskift i din enkelt-linje-string, og så replace det med \n lige før det sættes ind i textarea'et.

Nu siger du det ikke skal være JavaScript, I know, men det her virker da fint:

var str = "lala|hoho";
str = str.replace("|","\n");
document.getElementById('hus').value = str;

Så kan du altid lave linjeskift om til tegnet igen, hvis det skal tilbage i enkelt-linje-stregen...?
Avatar billede nielsbrinch Nybegynder
23. juni 2004 - 12:12 #18
Det er den workaround-løsning jeg beskrev 23/06-2004 09:07:19
Avatar billede nielsbrinch Nybegynder
23. juni 2004 - 14:48 #19
Du kendte ikke svaret på mit spørgsmål, men spørgsmålet var til gengæld også temmelig svært at forstå. Tak for din tid, viperine. Værs'go at svare.
Avatar billede Slater Ekspert
23. juni 2004 - 17:39 #20
Behold dem da - jeg kunne jo ikke hjælpe. Beklager.
Avatar billede nielsbrinch Nybegynder
23. juni 2004 - 18:02 #21
ok
Avatar billede jwulff Nybegynder
12. juli 2004 - 11:13 #22
Hej Niels,

Jeg ved ikke om du fik løst problemet.... Men der er en enkelt metode til at lave linjeskift i et textarea:

vbcrlf

Med venlig hilsen
Jacob Wulff
Avatar billede jwulff Nybegynder
12. juli 2004 - 11:13 #23
og i ASP fx: " & vbcrlf & "
Avatar billede powernodes Nybegynder
12. juli 2004 - 11:28 #24
Jeg forstår godt spørgsmålet, men ikke hvorfor.

Hvorfor kan du ikke i din c#, replace den ene vej hvis du vil se html, og den anden vej hvis du vil se text?

c#: .Replace("\n", "<br />"); og omvendt fra <br /> til \n?
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester