Btw... Du skal lige være opmærksom på hvordan du definerer \'linier\' i dit textarea... Antallet af linier kan fortolkes på forskellige måder, \'wrap\' attributten taget i betragtning... Hvis der er softbreak i dit textarea, vil outputtet jo se anderledes ud, hvis du kalder det, end det ser ud på særmen... Der bliver linjeskift i dit textarea nemlig ikke konverteret...
Jeg har ikke lige fået den pudset helt af, og da jeg skal hjem fra arbejd nu, så må jeg lige vende tilbage med løsningen i morgen. Men den virker kun hvis der er tale om Hard Wrap.
Hey jakoba Jeg kan ikke lige regne alle de tegn ud inde i replace funktionen. Men hvad gør du så med teksten bagefter? Det dur vel ikke at ændre i teksten?
variabelen tmp er en ny variabel der får det ændrede feltinghold, så selve feltet ændres slet ikke. /\\n/ er en regular expression der leder efter \n dvs linieskift i strengen, der skal tilføjes et ekstra \ foran \n for sikre at javascript fortolkeren sender præcis \n videre til den javascript funktion der fortolker regular expressions. "xx" bliver indsat istedet for linieskiftet, dvs 2 bogstaver indsættes hvor der før var et, så strengen i temp er altså 'antal lineskift' længere end den uændrede streng i feltet.
De \ tegn der står foran " i \"xx\" skal du ignorere, de stammer fra en fejl der var på eksperten en tid det korrekte der skal skrives i koden er blot: felt.value.replace( /\\n/, "xx" );
Strenghåndtering er ret uoverskuelig i begyndelsen (og fejl gør det ikke bedre), men der er faktisk mening i galskaben.
Jeg afskyer eval funktionen, lad os skrive så det kan læses:
function addline(felt) { var tmp = document.forms[0][ felt ].value.replace( /\\n/, "xx" ); var antalLinier = tmp.length - document.forms[0][ felt ].value.length; document.forms[0][ felt ].rows = antalLinier + 1; alert(tmp); }
Og jeg tror det var din eval der gjorde det. ved at skrive /\\n/ ind i en streng der skal eval(uere)s bliver der endnu et sted det bliver fortolket så de to \ tegn skal beskyttes hver for sig. Hvis du ønsker at beholde din eval kunne du evt sige: eval("tmp = document.forms[0]." + felt + ".value.replace( /\\\\n/, \"xx\" );");
men som sagt ovenfor vil jeg anbefale du undgår eval() funktionen, Der har kun været en enkelt gang i al den tid jeg har lavet javaskripts den egentlig var nødvendig.
Hej JakobA Jeg kan desværre stadig ikke få det til at virke. Først virkede det slet ikke. Jeg har ændret resExp til /\n/,"xx" altså fjernet en backslash før n'et. Nu er jeg tilbage til at den kan fange det første linieskift. Det næste fanger den ikke. Jeg skal ikke ud i en lykke eller så' noget?
koden finder kun de linieskift du selv laver ved at trykke på retur tasten. hvis du bare skriver derudaf kommer der ikke nogen linieskift selvom brovseren fordeler teksten over flere linier.
<tr> <td colspan="2" align="left" valign="top" class="g-broed"> Har der været nogen tekniske ting, der ikke har fungeret?</td> </tr> <tr> <td colspan="2" class="broed" valign="top"> <textarea name="teknik" style="border:1 solid #000000" cols="80"
<tr> <td colspan="2" align="left" valign="top" class="g-broed"> Har der været nogen tekniske ting, der ikke har fungeret?</td> </tr> <tr> <td colspan="2" class="broed" valign="top"> <textarea name="teknik" style="border:1 solid #000000" cols="80"
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.