Avatar billede ingeman Seniormester
03. juni 2003 - 19:34 Der er 20 kommentarer og
1 løsning

Konverter textarea til 30 tegn linjelængde

Mangler skille til hele ord.

<html>
<HEAD>

<!-- Minus AutoDato -->
<META NAME="Generator" CONTENT="Stone's WebWriter 3.5">
<SCRIPT LANGUAGE="JavaScript">

function showLines(max, text) {
max--;
text = "" + text;
var temp = "";
var chcount = 0;
for (var i = 0; i < text.length; i++) // for each character ...

var ch = text.substring(i, i+1); // first character
var ch2 = text.substring(i+1, i+2); // next character
if (ch == '\n') // if character is a hard return

temp += ch;
chcount = 1;
}
else
{
if (chcount == max) // line has max chacters on this line
{
temp += '\n' + ch; // go to next line
chcount = 1; // reset chcount
}
else  // Not a newline or max characters ...
{
temp += ch;
chcount++; // so add 1 to chcount
      }
  }
}
return (temp); // sends value of temp back
}
</script>

</HEAD>


<BODY>

<center>
<form name=form1>
<textarea name=text1 rows=15 cols=50>This is just an example of a long textbox entry that just went on and on and on and on.....  The visitor did not hit <enter> when entering this information so it continued off the right side of the textarea box.  Notice that hitting <enter> after each line, like this:
This is on another line
And so is this one.....

Still wraps correctly.  Neat!
</textarea><br>
<input type=button value="Wrap Lines to 30 Spaces" onClick="this.form.text1.value = showLines(30, this.form.text1.value)">

<br><br>
</form>
</center>
</body>
</html>
Avatar billede roenving Novice
04. juni 2003 - 02:15 #1
-- det gør den hos mig ?-)
Avatar billede ingeman Seniormester
04. juni 2003 - 18:55 #2
På min bliver det afpasset med 30 - men det er ikke hele ord
som flyttes til næste linje ? - hvis jeg trykker 2 gange går det helt galt.
Avatar billede roenving Novice
05. juni 2003 - 16:29 #3
Ikke et lille arbejde, men den virker næsten på samme måde, som wordwrapping gør i textarea
-- foreløbig har jeg fundet een, som jeg ikke bevidst har lagt ind: et mellemrum kan flyttes til næste linje - wordwrappen vil have ordet før med ...

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>

<title>Tomt dokument</title>

<META NAME="Generator" CONTENT="Stone's WebWriter 3.5">
<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>

</head>

<body>
<TABLE ALIGN="center"><TR><TD>

<TABLE WIDTH="500"><TR><TD ALIGN="center">
<FORM NAME="minForm">
<TEXTAREA NAME="testArea" COLS="50" ROWS="8" onkeydown="kDown(this,getCharCode(event),30)" onkeypress="kPress(this,getCharCode(event))" onkeyup="kUp(this,getCharCode(event),30)">1234567890123456789012345</TEXTAREA><BR>
<TEXTAREA NAME="testArea2" COLS="30" ROWS="8" onkeydown="" onkeypress="" onkeyup="">1234567890123456789012345</TEXTAREA>
</FORM>
</TD></TR></TABLE>

<div id="minDiv"></div>

</TD></TR></TABLE>

</body>

</html>

-- prøv det og kommenter gerne ;O)
Avatar billede ingeman Seniormester
05. juni 2003 - 17:14 #4
Den virker som en ganske alm textarea - den skulle jo skifter efter 30 tegn ?
det gør den ikke.
Avatar billede roenving Novice
05. juni 2003 - 17:19 #5
Den øverste skifter efter 30 tegn -- den nederste er med som kontrol, så man kan prøve at gøre det samme og sammenligne ...
Avatar billede roenving Novice
05. juni 2003 - 17:21 #6
-- årh, ja, det var jo i dit andet spm, du spurgte efter denne her funktion ;-)

-- jeg havde bare kun det her link liggende, så måske er svarene blevet krydset !-)
Avatar billede ingeman Seniormester
05. juni 2003 - 17:22 #7
Det gør min ikke - hvad kan der være galt jeg bruger IE6.0
Avatar billede ingeman Seniormester
05. juni 2003 - 17:27 #8
Når jeg tager din kode og bruger skrifter den ikke efter 30 tegn ?
Avatar billede roenving Novice
05. juni 2003 - 17:27 #9
Et eksempel på output i min IE 6:

1234567890123456789012345mmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmm
mmmmmmmmmmmmmmmmmmmmmmmmmmmmm
mmmmmmm
Avatar billede ingeman Seniormester
05. juni 2003 - 17:32 #10
Ja det kan godt se men i min forsætter den med at skrive hele boxen ud
og laver først linjeskrift jeg rammer højre kant af boxen ? - hvad kan der
være galt ?
Avatar billede roenving Novice
05. juni 2003 - 17:33 #11
Er der nogen javascript-fejlmeddelelser ?-)
Avatar billede ingeman Seniormester
05. juni 2003 - 17:35 #12
Nej ! - mangler der noget ?

<html>

<head>

<title>Tomt dokument</title>

<META NAME="Generator" CONTENT="Stone's WebWriter 3.5">
<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>

</head>

<body>
<TABLE ALIGN="center"><TR><TD>

<TABLE WIDTH="500"><TR><TD ALIGN="center">
<FORM NAME="minForm">
<TEXTAREA NAME="testArea" COLS="50" ROWS="8" onkeydown="kDown(this,getCharCode(event),30)" onkeypress="kPress(this,getCharCode(event))" onkeyup="kUp(this,getCharCode(event),30)">1234567890123456789012345</TEXTAREA><BR>
<TEXTAREA NAME="testArea2" COLS="30" ROWS="8" onkeydown="" onkeypress="" onkeyup="">1234567890123456789012345</TEXTAREA>
</FORM>
</TD></TR></TABLE>

<div id="minDiv"></div>

</TD></TR></TABLE>

</body>

</html>
Avatar billede roenving Novice
05. juni 2003 - 17:39 #13
Næ -- og den funker perfekt her (IE6, xpsp2 på Windows XP)
Avatar billede ingeman Seniormester
05. juni 2003 - 17:45 #14
Jeg bruger Windows 2000 server sp4 - men skulle være ligemeget ?
Avatar billede ingeman Seniormester
05. juni 2003 - 17:47 #15
Hov stop - jeg bruger en browser in min editor det er det der galt.
Virker direkte i browseren.
Avatar billede roenving Novice
05. juni 2003 - 17:51 #16
-- jeg kan heller ikke få noget som helst, som kører i editoren til at køre med events ...
Avatar billede ingeman Seniormester
05. juni 2003 - 17:55 #17
Javel - så har jeg lært lidt igen idag.
Det virker som det skal - tak for hjælpen - give et svar til points.
Avatar billede roenving Novice
05. juni 2003 - 18:23 #18
Velbekomme '-)
Avatar billede roenving Novice
05. juni 2003 - 18:25 #19
Takker for points ;~}
Avatar billede ingeman Seniormester
26. august 2003 - 19:49 #20
Vdr. dette script kan ikke bruge pil tilbage - til op ?
Avatar billede ingeman Seniormester
26. august 2003 - 19:49 #21
vdr. dette script kan ikke bruge PIL Tilbage - Pil op ?
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