14. april 2005 - 23:35Der er
7 kommentarer og 1 løsning
Bestemme antal tegn pr. linje i textarea (tvungen linjeskift)
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.
Tak for svar, men problemet med at skifte line blev ikke løst, curseren i tekstfeltet skifter ikke linje når der er indtastet over 40 tegn i linjen. Der er forskel på tegnenes brede, og derfor er det svært at benytte cols=40.
<center> <form name=myform action="YOUR-SCRIPT.CGI"> <font size="1" face="arial, helvetica, sans-serif"> (max 40 tegn i max 4 linjer)<br> <textarea name=message cols=50 rows=4 onKeyDown="textCounter(this.form.message,this.form.remLen,163);" onKeyUp="textCounter(this.form.message,this.form.remLen,163);"></textarea> <br> <input readonly type=text name=remLen size=3 maxlength=3 value="163"> characters left</font> </form> </center> --------------- I IE laver den et mellemrum og tæller derfor een mere Overvej i øvrigt om "\n" skal tælle med i de 40 tegn? For man kan ikke lave linjeskift uden det mindst fylder eet tegn Du kan rimelig snildt selv rette i koden. Du kan se der sammenlignes med 40,81,122 Det er fordi linjeskiftet ikke tælles med i de 40 så der er 41 i hver linje. Det er også derfor størrelserne nederst på siden er 163
Jeg ved ikke hvorfor der er forskel på FF og IE på det punkt Det virker som om FF tolker "\n" promte og rykker en linje ned hvorimod IE indsætter det og det på skærmen ligner et blanktegn indtil næste tegn indtastes. Prøv evt og kopiere koden ind i javascript kategorien, for der er muligvis en som ved mere :o) Et andet dillemma er hvis man skriver og så vil slette noget. Når man så når til et "\n" ja så bliver scriptet jo ved med at sætte den karakter ind. Derfor kan man ikke slette forbi den! Man kan heller ikke bare markere den linje man ønsker rette og så slette i den. Så snart man har slettet et tegn vil den danne en ny "\n" for enden. Test lige selv og overvej mulighederne. Som sagt er der nok en i Javascript kategorien som ved mere. (da jeg godt kan se mit foreslag ikke er så godt) -------- Men du kan lave et tjek i php når din form med dit textarea submittes og så give en fejlmeddelelse hvis det ikke stemmer overens.
Jeg tror denne løsning vil være bedre for dig: ---------- <HEAD>
<SCRIPT LANGUAGE="JavaScript"> <!-- function tjek(){ var x = document.getElementsByName("message"); var y = x[0].value.split('\n'); if(y.length > 4){ alert("Der må max være 4 linjer"); return false; }else{ for (i = 0; i < y.length; i++){ if(y[i].length > 40){ alert("Der må max være 40 tegn pr linje"); return false; } } } return true; } // End --> </script> </HEAD> <BODY>
Jeg tror jeg vil oprette spørgsmålet i JavaScript sektionen som busschou foreslår. Løsningen med alert vinduet, er ikke så god synes jeg, da man jo stadig ikke kan se tekst ombrydningen på skærmen. Men tak for forsøget. Jeg har foresten brugt busschous text counter så jeg vil gerne give point, lig trygt et svar...
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.