Avatar billede tryout Nybegynder
01. januar 2004 - 18:05 Der er 8 kommentarer

opbrydning af streng

Jeg har skrevet en gæstebog til min side, men er løbet ind i lidt af et problem.

Problemet består i at, hvis en "ondsindet" bruger indsætter en meget lang streng bestående af f.eks. 1-taller uden mellemrum eller linjeskift, så vil sidens design bliver ødelagt da tabel-elementet vil tilpasse sig indholdet.
Avatar billede thesurfer Nybegynder
01. januar 2004 - 18:35 #1
Her er en lille test.. Erstat indholdet af "tekst" med en masse 1-taller hvis du vil..
Scriptet laver en ny linie efter 50 tegn. Den tager ikke hensyn til ord, og mellemrum. Det bør man tilføje.
Du ændrer bare max.

<script type="text/JavaScript">
var tekst = "Problemet består i at, hvis en \"ondsindet\" bruger indsætter en meget lang streng bestående af f.eks. 1-taller uden mellemrum eller linjeskift, så vil sidens design bliver ødelagt da tabel-elementet vil tilpasse sig indholdet."

document.write("<br><br><nobr>" + tekst + "<br><br>"); // sådan der teksten ud

var max = 50; // max antal tegn per linie.

for (i = 0; i < tekst.length / max; i++) {
  document.write( tekst.substring(max * i, i * max + max) + "<br>");
}
</script>

Det er bare en start..
Avatar billede tryout Nybegynder
01. januar 2004 - 23:36 #2
Kan man anvende koden således?

<script type="text/JavaScript">

function textControl(text){

var inputText = text;

document.write("<br><br><nobr>" + inputTekst + "<br><br>"); // sådan der teksten ud

var max = 50; // max antal tegn per linie.

for (i = 0; i < inputTekst.length / max; i++) {
  document.write( inputTekst.substring(max * i, i * max + max) + "<br>");
}
</script>

Hvis JA, hvordan kalder jeg så javascript funktionen indefra asp-koden?

kode udklip:

Response.Write "<tr><td>" & rs("Kommentar") & "<br>&nbsp;</td></tr></table><br>"

Forslag:

Response.Write "<tr><td>" & textControl(rs("Kommentar")) & "<br>&nbsp;</td></tr></table><br>"

Jeg er ikke helt klar over hvordan syntaxen skal være for kombinationen af JavaScript og ASP da jeg ikke tidligere har haft brug for det
Avatar billede thesurfer Nybegynder
02. januar 2004 - 00:22 #3
Du kan jo bare lave det i ASP, når du har adgang til det.. du kalder bare funktionen, lige meget hvor i dokumentet du er..

<%
dim kommentar, max
dim start, slut
dim i

function FixTekst(kommentar)
for i = 0 to len(kommentar) / max
  start = max * i
  response.write mid(kommentar, start + 1, max) & "<br>"
next
end function

max = 50 ' antal tegn per linie

' kommentar = rs("Kommentar") ' hentes fra databasen

' Da jeg ikke har databasen, laver jeg en test:
kommentar = "Problemet består i at, hvis en ""ondsindet"" bruger indsætter en meget lang streng bestående af f.eks. 1-taller uden mellemrum eller linjeskift, så vil sidens design bliver ødelagt da tabel-elementet vil tilpasse sig indholdet."

response.write "<br><nobr>" & kommentar & "<br><br>" ' Så kan du se teksten

FixTekst(kommentar) ' funktionen FixTekst kaldes med indholdet af kommentaren
%>
Avatar billede tryout Nybegynder
07. januar 2004 - 18:17 #4
Jeg har tænkt lidt over det, ville det ikke være nemmere at teste strengen inden den bliver postet til database?
jeg har forsøgt at lave et javascript, det virker dog ikke i sin nuværende form.
var tekst = document.forms[0].Kommentar.value; //kontrollere kommentaren

for (i = 0; i < tekst.length; i++) {
  if ((tekst.substring(i)).length>50);
    { alert('teksten indeholder et udgyldigt ord!');
        error= 1;
    };
}
Avatar billede thesurfer Nybegynder
07. januar 2004 - 18:23 #5
Du kan vist også bruge overflow:
http://www.w3.org/TR/CSS21/visufx.html#propdef-overflow

Der er også table-layout egenskaben i CSS:
http://www.w3.org/TR/CSS21/tables.html#propdef-table-layout
Avatar billede tryout Nybegynder
07. januar 2004 - 18:30 #6
det er ikke helt det jeg er ude efter. Vil du ikke se på det script jeg har lavet.
Avatar billede thesurfer Nybegynder
07. januar 2004 - 18:52 #7
Jeg kan jeg først gøre senere i aften eller måske i morgen.. jeg bliver nød til at smutte..
Avatar billede thesurfer Nybegynder
07. januar 2004 - 20:55 #8
Eksempel:

<form>
<textarea name="Kommentar" cols="80" rows="10">
Det er er noget tekst.. yeps.. det er det.. som så et langt ord på 53 tegn:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa53
</textarea>
</form>

<script type="text/JavaScript">
var max = 50; // max længde per ord
var tekst = document.forms[0].Kommentar.value; //kontrollere kommentaren
var arrTekst; // arrayen som skal bruges
var fejl; // fejl-kontrol
var i; // tæller

arrTekst = tekst.split(" ") // del teksten ved mellemrum
for (i = 0; i < arrTekst.length; i++) { // så længe at tælleren i, er mindre en længden på arrayen, forhøj i med 1
  if (arrTekst[i].length > max) { fejl = 'ja'; } // hvis et det nuværende ord er længere end max, sæt fejl til "ja"
  document.write ('i: ' + i + ' - ' + arrTekst[i] + '<br>'); // skriv nummeret på ordet, og selve ordet.
}

if (fejl == 'ja') alert('teksten indeholder et udgyldigt ord!'); // hvis fejl, hvis fejl er sat til "ja"
</script>

Det ville nok være en god ide, at checke om ordet starter med http:// , https:// , telnet:// , ftp:// , www eller anden url-tegn..
Det kunne jo være et link, og links kan jo godt være 50 tegn lang.. :)
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