Avatar billede axkris Nybegynder
04. oktober 2003 - 10:52 Der er 9 kommentarer og
2 løsninger

Gennemtving bindestreg

Hej alle

Man kan jo få klienten (browseren) til at gøre meget med teksten, altså hvordan den skal vises og sådan, men kan man også få den til at gennemtvinge bindestreger i lange ord, så de ikke gør en tabel bredere end defineret?

Hvis f.eks. en bruger indtaster en sætning med et langt ord, så skal der automatisk indsættes en bindestreg i ordet, så man undgår at layouttet bliver grimt fordi en tabel pludselig er blevet bredere pga. et lang ord.
Avatar billede axkris Nybegynder
04. oktober 2003 - 11:04 #1
Jeg har læst http://www.eksperten.dk/spm/203906 men forskellen er, at jeg ikke kender ordenes længde... i mit eksempel er det brugerne, som indtaster ordene og ikke mig selv :-)
Avatar billede roenving Novice
04. oktober 2003 - 11:21 #2
Hvad med en String.replace:

function checkLaengde(fld){
indlaeg = fld.value;
indlaeg = indlaeg.replace(/([\wæøå]{25})/gi,"\$1\-");
fld.value = indlaeg;
}
Avatar billede axkris Nybegynder
04. oktober 2003 - 14:06 #3
Super godt - men det kun kan gøre med et script, så skal jeg bruge det i ASP, så kan du ikke lave det i asp i stedet? Jeg putter lidt ekstra oveni så. :-)
Avatar billede roenving Novice
04. oktober 2003 - 14:24 #4
Jeg har testet den sådan:

<script language="javascript" type="text/javascript">
function checkLaengde(fld){
indlaeg = fld.value;
indlaeg = indlaeg.replace(/([\wæøå]{25})/gi,"\$1\-");
indlaeg = indlaeg.replace(/--/gi,"-");
fld.value = indlaeg;
}
</script>


<textarea name="mitTextarea" id="mitTextarea" cols="40" rows="5" onchange="checkLaengde(this)"></textarea>

-- og jeg fandt lige ud af, at hvis det sker client-side skulle jeg også teste på, at den ikke gjorde det på samme stump to gange.

-- jeg kender intet til asp (eller rettere min øvelse i vb er stort set fraværende), så der må du over i script --> asp -kategorien !-)
Avatar billede axkris Nybegynder
04. oktober 2003 - 14:46 #5
Mange tak for hjælpen - tryk lige "svar"
Avatar billede roenving Novice
04. oktober 2003 - 15:01 #6
Velbekomme '-)
Avatar billede axkris Nybegynder
04. oktober 2003 - 15:03 #7
Selvtakker :-)
Avatar billede axkris Nybegynder
04. oktober 2003 - 15:04 #8
Jeg vil smide scriptet over i asp-kategorien (som du omtaler) med mindre, at jeg kan finde en anden løsning.
Avatar billede axkris Nybegynder
04. oktober 2003 - 15:11 #9
Liiiiiiiiiiige et sidste liiiiiie spørgsmål...

Der er jo ikke meget if-else i en reg-sætning, så hvordan smider man en alert, hvis scripet har indsat en bindestreg?
Avatar billede roenving Novice
04. oktober 2003 - 15:17 #10
-- så skal du tilføje lidt mere:

<script language="javascript" type="text/javascript">
function checkLaengde(fld){
indlaeg = fld.value;
txt = indlaeg;
indlaeg = indlaeg.replace(/([\wæøå]{25})/gi,"\$1\-");
indlaeg = indlaeg.replace(/--/gi,"-");
if(txt!=indlaeg){
  fld.value = indlaeg;
  alert('For lange ord er blevet opdelt.\n\nEt sammenhængende ord må\nmaksimalt være på 25 bogstaver');
  }
}
</script>

-- og tak for points ;~}
Avatar billede axkris Nybegynder
04. oktober 2003 - 15:18 #11
Smukt, smukt, smukt :-)
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