radbrytning
37 svar · 808 visningar · startad av Mira · sida 2 av 2
Frågan, av Mira
Forumet som jag laddat hem (skrivet i ASP) är kodat så att man får ett nytt stycke när man trycker Enter (alltså i formuläret när man ska skriva ett inlägg)... Jag vill inte ha det så. Vad ska jag leta efter i koden för att kunna ändra det?
Läs frågan i sin helhet →Nytt stycke som i enter + enter är ju nästan samma sak om det är det du menar?
strMessage = Replace(strMessage, vbCrLf & vbCrLf, "<br><br>" & vbCrLf, 1, -1, 1)
eller möjligen
strMessage = Replace(strMessage, vbCrLf & vbCrLf, "<p></p>" & vbCrLf, 1, -1, 1)
Jag hittar inget liknande...
Det här är vad som finns i samband med den rad jag tog bort:
strMessage = Replace(strMessage, "<", "<", 1, -1, 1)
strMessage = Replace(strMessage, ">", ">", 1, -1, 1)
strMessage = Replace(strMessage, " ", "(_______)", 1, -1, 1)
strMessage = Replace(strMessage, " ", "(______)", 1, -1, 1)
strMessage = Replace(strMessage, " ", "(_____)", 1, -1, 1)
strMessage = Replace(strMessage, " ", "(____)", 1, -1, 1)
strMessage = Replace(strMessage, " ", "(___)", 1, -1, 1)
strMessage = Replace(strMessage, vbTab, "(_____)", 1, -1, 1)
där jag har lagt parenteser finns egentligen ["och" NBSP;] - men dom syns ju inte här... alltså tecknet för mellanslag...
sen finns det en hel del andra "Replace", men det är bara olika tecken, inga <br> eller <p> eller "vbCrLf"
strMessage = Replace(strMessage, "<", "<", 1, -1, 1)
strMessage = Replace(strMessage, ">", ">", 1, -1, 1)
[red]strMessage = Replace(strMessage, " ", "(_)", 1, -1, 1)[/red]
strMessage = Replace(strMessage, vbTab, "(_____)", 1, -1, 1)
Vad menar du?
Det går inte att skriva "& nbsp;" - så där det är en underline, där finns det "& nbsp;"
Det är väl inte det som har med nytt stycke att göra...?
Måste "vbCrLf" finnas med?
Kan inte förstå vad som är fel...
kan någon förklara vad den raden betyder - ord för ord...
är det bättre att ändra något i den än att ta bort den helt?
strMessage = Replace(strMessage, vbCrLf, "<br>" & vbCrLf, 1, -1, 1)
Kika här: http://www.devguru.com/technologies/vbscript/quickref/replace.html
Det som händer är att vbCrlf (=Det "osynliga" radbrytet) byts ut mot ett "html"-radbryt, <br> SAMT ett vbCrLf.
Mao får du dels ett <br> i koden samt ett radbryt i källkoden.
Kanske kan du skriva så här:
strMessage = Replace(strMessage, vbCrLf, "" , 1, -1, 1)
Fast det tar ju (väl) bara bort radbryt i källkod. (Samt i textarea mm.)
måste va nåt fel på den koden... avståndet ökar istället...
vad står 1:orna för?
alltså, det måste stå nåt annat än "vbCrLf" - för jag har testat att lägga in olika saker som ersättning, men inget händer, det blir ingen skillnad...
Betyder "vbCrLf" verkligen ett Enter-tryck?
Har fortf. problem med detta...
strMessage = Replace(strMessage, vbCrLf, "<br>" & vbCrLf, 1, -1, 1)
Jesper T skrev:
Du kan ta bort den, ja!
Jag har förstått nu att jag inte alls ska ta bort den, utan det är just den som ska göra att ett Enter bli <br istället för <p>.
Problemet är att den inte gör det.
Jag har letat upp de ställen jag tror att det ska ligga - och jag har lagt in strängen ovanför, men det blir ingen skillnad.
För det första undrar jag:
Ska Replacen ligga både i formuläret där inläggen skrivs och på sidan där inlägget visas?
Jag har visserligen lagt in den på båda ställen, men något måste ha blivit fel...
Undrar fortf. vad 1:orna står för i strängen...?
Mira skrev:
För det första undrar jag:
Ska Replacen ligga både i formuläret där inläggen skrivs och på sidan där inlägget visas?
Nej, bara där du visar det inläggen från databasen.
Mira skrev:
Undrar fortf. vad 1:orna står för i strängen...?
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsfctreplace.asp
I det här fallet spelar de ingen roll alltså.
Mvh
Ok.
Om jag då har skrivit denna sträng:
strMessage = Replace(strMessage, vbCrLf, "<br>" & vbCrLf, 1, -1, 1)
och det som skrivs ut ser ut såhär:
<td class="text" valign="top">
<!-- Message body --><% = strMessage %><!-- Message body ''"" --></td>
Varför blir det inte rätt?
Det är fel redan i formuläret - alltså Enter-klick blir <p> där med.
Då vill jag se mer kod. Om enter blir <p> så måste det ersättas till det någonstans.
Visa all relevant kod, så slipper vi gissa. :)
Mvh
Här är alla Replace-koder:
http://xist.dk/x/replace1.txt
http://xist.dk/x/replace2.txt
Lyckas inte få 2:an att synas på skärmen, men kolla koden.
Oj, det där var väldigt mycket kod.
Det ser ut som att du gör en herrans massa replace innan du lägger in i databasen. Generellt skall man inte göra några replacer (förutom en apostrof till två apostrofer) innan man lägger in i databasen, utan endast när man visar upp.
- - - - -
Jag kan dock inte se någonstans som det blir <p> av radbrytning?
Mira skrev:
<td class="text" valign="top"> <!-- Message body --><% = strMessage %><!-- Message body ''"" --></td>Varför blir det inte rätt?
Det är fel redan i formuläret - alltså Enter-klick blir <p> där med.
Hmm. Jag förstår inte riktigt vad du menar med ditt exempel. Har du någon URL där man kan testa och se?
Alltså, det är inte JAG som gör något... det är ett färdigt script för ett forum.
Det är ca 80 filer som inkluderas hit och dit - ett enda virrvarr för en nybörjare...
Här är forumet: http://xist.dk/
Om du vill testa hur det ser ut så gå till Postlådan och skriv ett inlägg.
Hmmm.....
Det är ju din richtext-editor som gör två radbrytningar när man trycker enter. Den fungerar så. Om man vill ha en radbrytning trycker man shift-enter. Och eftersom där är dubbla radbrytningar är det ju egentligen korrekt att det visas upp som det också.
Den enklaste (och bästa imho) lösningen är att inte använda den typen av textarea. Möjligen går det att göra någon inställning, så det bara blir radbyte när man trycker på enter.
Det jag skulle ha gjort (eftersom jag hatar <p>-taggar) är följande (innan man lägger in det i databasen):
strMessage = replace(strMessage, "<P>", "")
strMessage = replace(strMessage, "</P>", "<BR>")
Om man vill att det bara ska vara en radbrytning då...
Mvh

