Avatar billede ingeman Seniormester
26. august 2003 - 16:50 Der er 6 kommentarer og
1 løsning

Kontrol over textarea - hvem kan ?

<script language="javascript" type="text/javascript">
    var ignKey = false;
    var newVal = "";
    var repeatChar=0;
    var removeChar=0;

    function getCharCode(e){
        return (e.which)?e.which:e.keyCode;
    }

    function restoreVal(eC,f){
        removeChar=0;
        f.value=newVal;
    }

    function kDown(f,ch,l){
        if ((ch!=8 && ch<32) || (ch<41 && ch>32) || (ch<124 && ch>111)){ignKey=true;return true;}
        if (repeatChar>0){
            f.value = chkLength(newVal,l);
            return false;
        }
        if (ch!=8)repeatChar++;
    }

    function kPress(f,ch){
        newVal=f.value+String.fromCharCode(ch);
        return false;
    }

    function kUp(f,ch,l){
        if (ch==8)return true;
        f.value = chkLength(newVal,l);
        repeatChar=0;
        removeChar=0;
        return false;
    }

    function chkLength(txt,l){
        l--
        var r = txt.lastIndexOf("\r");
        var n = txt.lastIndexOf("\n");
        var s = Math.max(r,n)+1;
        if (txt.length>s+l){//test også her ...
            var endstr = delLinie(txt.substring(s),l);
            return txt.substring(0,s)+endstr;
        }else{
            return txt;
        }
    }

    function delLinie(txt,l){
        var insertHyphen = false;
        var natDelAfter = " A-A}A]A),";
        var natDelBefore = "(A{A[";
   
        natDelAfter = natDelAfter.split("A");
        natDelBefore = natDelBefore.split("A");
   
        var place = -1;
        for (i=0;i<natDelAfter.length;i++){//>
            var p = txt.lastIndexOf(natDelAfter[i]);
            if(p>-1)place = Math.max(place,p+natDelAfter[i].length);
        }
   
        for (i=0;i<natDelBefore.length;i++){//>
            var p = txt.lastIndexOf(natDelBefore[i]);
            if(p>-1)place = Math.max(place,p-natDelBefore[i].length);
        }
        if (place>0)l = Math.min(place,l);
        return txt.substring(0,l)+"\n"+txt.substring(l);
    }
</script>

<textarea  Class="inputs" style="height:230px" name="totext" rows=25 cols=70 wrap="physical" onkeydown="kDown(this,getCharCode(event),65)" onkeypress="kPress(this,getCharCode(event))" onkeyup="kUp(this,getCharCode(event),65)"></textarea>

Koden virker ikke når der bruges Pil tilbage - Pil op.
Avatar billede skovenborg Nybegynder
26. august 2003 - 20:18 #1
Hvad skal den egentlig gøre??
Når jeg kører scriptet skriver den '&(% afhængigt af hvad for en piletast man bruger.
Avatar billede ingeman Seniormester
26. august 2003 - 20:27 #2
Den bruges til skrive max 65 tegn pr linje for så derefter
at skifte til ny linje.
Da textarea ingen begrænsninger har mhs til antal tegn pr linje er jeg
nødt til at have en function som afgrænser hver linje til 65 tegn da teksten
skal bruges på et faxformular.
Det med de tegn &(% gør min ikke - derimod springer den heletiden til slut
hvis jeg prøver at bruge Pil tast tilbage - eller Pil tast op.
Avatar billede skovenborg Nybegynder
26. august 2003 - 22:04 #3
hvorfor skal du så styre piletasterne???

(det med &(%' er noget der skete i mozilla)
Avatar billede skovenborg Nybegynder
26. august 2003 - 22:39 #4
hvis du bare skal skille lave linjeskift efter fx hvert 65 tegn kan du gøre sådan:
function line_break(teksten)
{
      tekst_arr = teksten.split("\n");
      tekst_validate = tekst_arr[tekst_arr.length-1];
      if (tekst_validate.length >= 65) document.form1.tekst.value += "\n";
}
....
<form name="form1">
<textarea name="tekst" cols="40" rows="5" onkeydown="line_break(this.value);"></textarea>
</form>
Avatar billede skovenborg Nybegynder
26. august 2003 - 22:40 #5
hehe, det skulle nok hellere være:
<textarea name="tekst" cols="70" rows="5" onkeydown="line_break(this.value);">
ellers vil du ikke rigtig kunne se det
Avatar billede ingeman Seniormester
28. august 2003 - 19:28 #6
Meget muligt - men det virker ikke !
Avatar billede ingeman Seniormester
13. september 2003 - 11:34 #7
lukket
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