Avatar billede rour Nybegynder
15. april 2005 - 10:54 Der er 19 kommentarer og
2 løsninger

Bestemme antal tegn pr. linje i textarea (tvungen linjeskift)

Laver lige dette ? med lidt flere point.

Jeg er ved at lave et info system, hvor man skal intaste noget i et tekstfelt. Det skal sidenhen sættes ind på en side hvor der er 4 linjer med 40 tegn i hver linje.

Jeg vil gerne ha det sådan, at når man indtaster i textareaet, så ser man direkte når man skifter linje. Det vil sige at hvis man taster over 40 tegn indsættes automatisk et linje skift, og curseren i textarea'et flytter sig ned til næste linje.

Er der nogen bud på hvordan man løser det?

Jeg har ikke særlig meget erfaring i Javascript, så en forklaring for tumper vil være rart...
Avatar billede skyggen2000 Nybegynder
15. april 2005 - 11:04 #1
Well, tror ikke jeg er helt med, men hvis du benytter et tekstarea som i dette eksempel, så laver den automatisk linieskift.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<script language="javascript" type="text/javascript">

function testFunction(areaObj, maxValue)
{       
  // maxValue sætte til 160 pga. 40 * 4
    if(areaObj.value.length > maxValue)
        alert("Der må maksimalt være: " + maxValue + " i denne tekstboks!");
}   

</script>

<body>
    <textarea name="hejsa" cols="40" rows="4" onkeydown="testFunction(this,160);" style="overflow:hidden">noget tekst</textarea>   
</body>

</html>
Avatar billede rour Nybegynder
15. april 2005 - 11:38 #2
Det var oså det jeg troede jeg skulle, men textarea den er ikke precis. Der er forskel på breden af f.eks. et "l" og et "L" derfor virker det ikke rigtigt kun at definere max længden. Jeg vil kunne se hvilke tegne der er på hvilke linjer.
Avatar billede skyggen2000 Nybegynder
15. april 2005 - 11:44 #3
Det er et evigt tilbagevendende problem, og der er så vidt jeg ved ikke nogen fornuftig løsning. man kan indstille textarea til at lave hard ombrydning ved linieskift, men det funker vidst ikke helt...

hvad med bare at begrænse den til de 4 linier, for det kan man godt?

Prøv at beskriv helt præcist hvad og hvorfor du brug for det, for måske er der en måde omkring det eller en anden løsning.
Avatar billede skyggen2000 Nybegynder
15. april 2005 - 11:45 #4
Man kan ikke låse tekstområdet så man ikke kan komme ud over de 4 linier heller, men man kan klippe teksten der kommer ud over af, så man opnår begrænsningen på den måde.
Avatar billede rour Nybegynder
15. april 2005 - 11:59 #5
Jeg skal senere sætte teksten ind i nogle felter, og der er 40 felter i hver linje. Derfor vil jeg gerne ha' at man også på skærmen kan se hvilke bogstaver/tegn der kommer til at stå på hvilke linjer.
Avatar billede busschou Praktikant
15. april 2005 - 12:01 #6
Hvis du primært arbejder i IE så kan du bruge wrap="hard" ..men den fanger ikke i fx FF
http://www.idocs.com/tags/forms/_TEXTAREA_WRAP.html
Avatar billede rour Nybegynder
15. april 2005 - 12:04 #7
Ja, jeg er stødt på den, men mine brugere arbejder i forskellige browsere, så den kan jeg heller ikke bruge...øv Men tak for budet.
Avatar billede busschou Praktikant
15. april 2005 - 12:10 #8
Jeg tror det er praktisk taget umuligt..(intet er umulig men måske ret bøvlet)..at løse det tilfredsstillende for dig.
Hvis det skal laves i javascript så skal der jo testes på onKeyDown og/eller på onKeyOp
Det gør jo så at hvis man med musen copy/paster så fanger javascriptet det ikke
Avatar billede rour Nybegynder
15. april 2005 - 12:20 #9
En alternativ løsning ville måske være at man laver 4 felter(1 felt for hver linje), hvor man putter sin tekst ind . I en sådan løsning ved jeg godt hvordan man tjekker om der er skrevet for meget i hvert enkelt felt, men hvad så hvis man prøve at paste en lang tekst ind?
Er det for eksempel muligt at lade de første 40 tegn der står i feltet blive stående, og flytte resten til næste felt, og så fremdeles?
Avatar billede rour Nybegynder
15. april 2005 - 12:26 #10
Ellers må jeg lave en knap som viser det med linje ombrydning før godkendelse.
Avatar billede skyggen2000 Nybegynder
15. april 2005 - 12:26 #11
bussschou >> wrap="hard", kan kun benyttes hvis det sendes tilbage til serveren, men det gør det måske også. Kan detsværre ikke bruges client side.

Med hensyn til copy/paste, kan du samtidig med din onkeyup og down, sætte samme funktion på onchange, eller onblur.

Du kan ikke bestemme en linie i javascript.
Avatar billede busschou Praktikant
15. april 2005 - 12:29 #12
Hvem er det som skal taste ind?
Ved godt hvad du ønsker.... men hvis der står at "her kan du indstaste max 40 pr linje og max 4 linjer" Så ville jeg nok selv synes det var nok med en advarsel bagefter hvis det ikke passede.
Nå men jeg giver op med den "perfekte" løsning..hænger på hvis en skulle finde den :o)
Avatar billede skyggen2000 Nybegynder
15. april 2005 - 12:39 #13
Du skriver:
Jeg skal senere sætte teksten ind i nogle felter, og der er 40 felter i hver linje. Derfor vil jeg gerne ha' at man også på skærmen kan se hvilke bogstaver/tegn der kommer til at stå på hvilke linjer.

Hvorfor er det nødvendigt? Man kan jo godt javascript hive de første 40 tegn ud og indsætte i et input felt så du kan se det, og så fremdeles med fra 40-80...
Avatar billede rour Nybegynder
15. april 2005 - 12:47 #14
Det vil bare være så meget nemmere for brugerne hvis de mens de skriver, eller paster ind, kan se hvordan tekst ombrydningen vil være. 

Men hvis du kan hjælpe mig til at lave 4 felter, hvor man kan paste ind. og man så tjekker om der er mere en 40 tegn, og hvis det er tilfældet så sætter det ind i næste felt. Så vil jeg  acceptere det svar, nu hvor det ser ud til at det andet ikke kan lade sig gøre.
Avatar billede skyggen2000 Nybegynder
15. april 2005 - 12:51 #15
det bliver noget rod, og ikke særlig brugervenligt ville jeg mene.

Tekstombrydningen sker jo automatisk mens de taster i tekstområdet, og det vel samme ombrydning man skal benytte senere hen?

Man kunne måske have et lille billede, og hvis man holder musen over, hvis den hvordan tekstombrydningen for tekstområdet vil se ud, hvis man tager 40 bogstaver tegn råt pr. linie.
Avatar billede rour Nybegynder
15. april 2005 - 12:57 #16
Det lyder lidt kompliceret, det kan godt være at jeg er kommet derud, hvor jeg ikke kan bunde, og bare må tage mig til takke...
Avatar billede skyggen2000 Nybegynder
15. april 2005 - 12:59 #17
Du må veje nødvendigheden af funktionaliteten op mod kompleksiteten.

Kunne godt virke som om det er lidt overkill at have det du ønsker.
Avatar billede rour Nybegynder
15. april 2005 - 13:45 #18
Ok jeg lukker, eller I har jo alligevel hjulpet mig begge to, hvis i giver svar skal i få pointene.
Avatar billede skyggen2000 Nybegynder
15. april 2005 - 13:54 #19
Det kommer her:)
Avatar billede skyggen2000 Nybegynder
15. april 2005 - 13:55 #20
upser:) her kommer det så:)
Avatar billede busschou Praktikant
15. april 2005 - 15:28 #21
oki doki.. håber du finder en tilfredstillende fornuftig løsning trods alt :o)
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