Avatar billede mesteren_selv Nybegynder
09. juni 2005 - 20:46 Der er 9 kommentarer og
1 løsning

Max rows i textarea

Hej derude...

Kan jeg begrænse antallet af rækker i en textarea, ligesom jeg med maxlength kan begrænse antallet af tegn i en textbox?

Og hvordan?

På forhånd tak fra mesteren
Avatar billede gryn Nybegynder
09. juni 2005 - 21:46 #1
Ikke rigtig, men du kan gøre noget, som næsten er lige så godt.

Hvis du bruger en skrifttype, hvor alle tegn har samme bredde, hvilket faktisk er default, og du angiver cols til f.eks. at være 30, så kan du lave et javascript, som laver en begrænsning på antallet af tegn man må bruge. Således vil antallet af rækker også begrænses, men kun såfremt brugeren ikke benytter sig af linjeskift.

Dette kan selvfølgelig være svært at leve med, men linjeskiftende kan der faktisk også kompenseres for, men det kræver et script med lidt længere hår.

Jeg kan godt lave det... er du interesseret?
Avatar billede mesteren_selv Nybegynder
11. juni 2005 - 14:00 #2
Meget... Det er ret vigtigt at der kompenseres for linieskift... tak
Avatar billede gryn Nybegynder
11. juni 2005 - 23:00 #3
undskyld jeg ikke lige har lavet det endnu. Prøver at nå det i morgen
Avatar billede gryn Nybegynder
13. juni 2005 - 00:16 #4
Nu har jeg lavet noget, som ser ud til at virke. Bemærk at variablen "kolonner" skal have samme værdi som "cols=" i html'en for textarea'et.


<html>
<head>
<title>Max rows</title>

<script language="javascript">
var kolonner = 30;        //antal kolonner i dit textarea
var maxlinjer = 5;        //Maximalt antal linjer


var tempstore = "";
var linjer = new Array();
var ord = new Array();
var egentlig = 0;

var istr = 0;

function mlmrm(str){

ord = str.split(" ");

    for(n=0;n<ord.length;n++){

        if(istr+ord[n].length>kolonner){
        egentlig = egentlig + kolonner;
        istr = ord[n].length+1;
        }
        else {
        istr = istr+ord[n].length+1;
        }

    }
istr = 0;
egentlig = egentlig + kolonner;
}


function tjek(){
o = document.sara.mette.value;
linjer = o.split("\n")


    for(i=0;i<linjer.length;i++){
   

            mlmrm(linjer[i]);

    }

    if (egentlig> maxlinjer*kolonner){
    document.sara.mette.value = tempstore;;
    }


tempstore = document.sara.mette.value;

//document.sara.midl.value = egentlig;    <input name="midl" />
egentlig=0;
}
</script>

</head>
<body>



<form name="sara">
<textarea name="mette" rows="10" cols="30" onkeydown="tjek()" onblur="tjek()"></textarea>

</form>



</body>
</html>



/gryn
Avatar billede roenving Novice
13. juni 2005 - 00:48 #5
-- monstro man skulle tilføje at scriptet virkede mod alle textareas i dokumentet, f.eks. ved at lade scriptet hente sine værdier fra det textarea, som kaldte det ?-)
Avatar billede gryn Nybegynder
13. juni 2005 - 12:38 #6
Det kunne man selvfølgelig. Det kræver kun nogle mindre rettelser. Skal jeg gøre det mester?
Avatar billede gryn Nybegynder
16. juni 2005 - 14:16 #7
Er du der endnu?
Avatar billede mesteren_selv Nybegynder
19. juni 2005 - 13:59 #8
Sorry... Var lige fra computeren i et par dage... Tester lige
Avatar billede mesteren_selv Nybegynder
19. juni 2005 - 14:13 #9
Du må meget gerne tilføje det der ekstra... Det er vel bare noget meget at tilføje en variabel til funktionen tjek(), f.eks. tjek(tjekvar), og så udskifte mette med den!?
Avatar billede mesteren_selv Nybegynder
19. juni 2005 - 14:25 #10
Kan jeg få den til at lade være med at hoppe op og fortsætte på linien, men måske tilføje en advarsels pop-up?
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
Kurser inden for grundlæggende programmering

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