olebole > Kan man ikke tælle antallet af newlines? Eller er det ikke til at regne med? Har ikke lige prøvet, men tænkte at det lød som en logisk løsning :)
Spørgsmålet har været oppe masser af gange, men det er sjældent input'et, der har interesse. Som oftest er det det resulterende, senere output, der skal begrænses. Textareas er forskellige i forskellige browsere (og under forskellige OS'er), derfor er det som regel bedre at fylde indholdet i et skjult div af samme beskaffenhed, som det, teksten sluttelig skal vises i - på onkeyup. Derefter checker man, hvornår højden ændrer sig og begrænser på denne måde.
Men stiller man et 'økonomiseret' spørgsmål, får man standard-svaret ... og der er ikke en standard-metode at gøre dette på. Gør man sig derimod den ulejlighed at komme med lidt relevant info, gør jeg mig også som svarer mere umage med at finde en passende løsning :) /mvh
function tjeck(hvad){ for (var i = 0; i < hvad.length; i++) { var ch = hvad.substring(i, i+1); // first character var ch2 = hvad.substring(i+1, i+2); // next character if (ch == '\n') { lncount++; }
if (lncount >= max) { alert("Du kan max benytte "+max+" linier!") } }
document.getElementById('antal').innerHTML='Du har nu ' +(max - lncount)+ ' linier tilbage.' } </script>
Men det virker vist ikke helt... Den tæller fin første linie skift, men derefter tæller den for hvert tegn der trykkes...
Og hvis man sletter et linieskift, trækker den det ikke fra...
<script language="javascript"> function parseLines(lines, MaxLineCount){ var lineCount = 1; var clipPos = -1; var l = lines.length; for (var i=0; i<l; i++) if (lines.charCodeAt(i) == 10){ if (lineCount == MaxLineCount) clipPos = i; lineCount++; } return clipPos; } function handleKeyPress(){ var element = event.srcElement; var isEnter = (window.event.keyCode == 13); var oldValue = element.value; if (isEnter) oldValue += "\n"; var clipPos = parseLines(oldValue, element.MaxLineCount); if (clipPos > 0) window.event.keyCode = 0; } function handleKeyUp(){ var element = event.srcElement; var value = element.value; var clipPos = parseLines(value, element.MaxLineCount); if (clipPos > 0) element.value = value.substring(0, clipPos - 1); } function attachMaxLineCount(element, MaxLineCount){ element.MaxLineCount = MaxLineCount; element.attachEvent("onkeypress", handleKeyPress); element.attachEvent("onkeyup", handleKeyUp); } function bodyLoaded(){ attachMaxLineCount(inputarea10, 10); attachMaxLineCount(inputarea15, 15); } attachEvent("onload", bodyLoaded); </script>
Så lidt :o) Og tak for points - nu nåede jeg op over den magiske 10.000-grænse... Tak!
Synes godt om
Ny brugerNybegynder
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.