Avatar billede jps2mt Nybegynder
09. februar 2003 - 19:16 Der er 14 kommentarer og
1 løsning

Max. linier i et textarea

Hvordan kan jeg sørge for at der ikke kommer over 10 linier i et textarea??
Avatar billede olebole Juniormester
09. februar 2003 - 19:32 #1
<ole>

Det kan man ikke

/mvh
</bole>
Avatar billede tangveje Nybegynder
09. februar 2003 - 19:35 #2
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 :)
Avatar billede jps2mt Nybegynder
09. februar 2003 - 19:37 #3
Kan man ikke??
Det må da kunne lade sig gøre at tjekke textarea'ets value for CR/LF
Avatar billede pelkjaer Nybegynder
09. februar 2003 - 20:20 #4
Hvad med denne her sammen med onkeyup fx:

http://javascript.internet.com/forms/line-wrapper.html
Avatar billede olebole Juniormester
09. februar 2003 - 20:47 #5
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.
Avatar billede olebole Juniormester
09. februar 2003 - 20:49 #6
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
Avatar billede jps2mt Nybegynder
09. februar 2003 - 21:03 #7
Indtil vidre har jeg flg.:

<script> 
max    = 10;
lncount = 0;

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...
Avatar billede cms Nybegynder
09. februar 2003 - 21:20 #8
<html>

  <body>
 
    <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>
   
    <style type="text/css">
      .inputarea {
        border: 1px ridge thin;
        width: 300px;
        height: 250px;
      }
    </style>
   
    Max 10 linjer:<br />
    <textarea name="inputarea10" id="inputarea10" class="inputarea" wordwrap="false"></textarea>
    <br />
    <br />
    Max 15 linjer:<br />
    <textarea name="inputarea15" id="inputarea15" class="inputarea" wordwrap="false"></textarea>

  </body>

</html>
Avatar billede cms Nybegynder
09. februar 2003 - 21:26 #9
ups.. skal selvfølgelig være wrap="off" og ikke wordwrap="false" !
Avatar billede jps2mt Nybegynder
09. februar 2003 - 22:52 #10
cms >> Hvorfor får jeg besked ikke defineret fejl når jeg bruger dit script??

Mit textarea hedder besked, og har fået id besked...
Avatar billede cms Nybegynder
09. februar 2003 - 23:08 #11
prøv at bruge denne udgave:
http://e.dyndns.dk/MaxLines/index.html
Avatar billede jps2mt Nybegynder
09. februar 2003 - 23:19 #12
Det er jo det eksempel du har sendt til mig...

Det virker fint...Men så snart jeg ændrer

      attachMaxLineCount(inputarea10, 10);

til

      attachMaxLineCount(besked, 10);

virker det ikke mere...
Avatar billede cms Nybegynder
09. februar 2003 - 23:31 #13
Nej det er et andet eksempel!
Avatar billede jps2mt Nybegynder
09. februar 2003 - 23:44 #14
Mucho better...

Tanx...
Avatar billede cms Nybegynder
09. februar 2003 - 23:48 #15
Så lidt :o) Og tak for points - nu nåede jeg op over den magiske 10.000-grænse... Tak!
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