automatisch naar volgende line na x aantal karakters

  • Onderwerp starter Onderwerp starter bkn
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

bkn

Nieuwe gebruiker
Lid geworden
10 feb 2008
Berichten
2
Hallo,

Ik heb de volgende code gevonden om na een x aantal karakters automatisch naar de volgende regel te gaan in een textarea:

HTML:
// Line Splitter Function
// copyright Stephen Chapman, 19th April 2006
// you may copy this code but please keep the copyright notice as well
function splitLine(st,n) 
{
var b = ''; var s = st;
while (s.length > n)
{
var c = s.substring(0,n);
var d = c.lastIndexOf(' ');
var e =c.lastIndexOf('\n');
if (e != -1) d = e; if (d == -1) d = n; b +=       c.substring(0,d) + '\n';
s = s.substring(d+1);
}
return b+s;
}
var myText40 = splitLine(myText,10);
var myHTML = myText40.replace(/\n/g,'<br \/>');
</script>

Nu wilde ik deze code als volgd toe passen:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script>
// Line Splitter Function
// copyright Stephen Chapman, 19th April 2006
// you may copy this code but please keep the copyright notice as well
function splitLine(st,n) 
{
var b = ''; var s = st;
while (s.length > n)
{
var c = s.substring(0,n);
var d = c.lastIndexOf(' ');
var e =c.lastIndexOf('\n');
if (e != -1) d = e; if (d == -1) d = n; b +=       c.substring(0,d) + '\n';
s = s.substring(d+1);
}
return b+s;
}
myText40=document.getElementById("myText").value;
var myText40 = splitLine(myText,10);
var myHTML = myText40.replace(/\n/g,'<br \/>');
document.getElementById("myText").innerHTML=myHTML;
</script>                  





</head>

<body>
<form>
<textarea name="test" id="myText" cols="20" onKeyPress="document.getElementById('preview').value = splitLine(this.form.test.value)" onkeyup="document.getElementById('preview').value = splitLine(this.form.test.value)" onkeyup="splitLine(st,n)"></textarea>
</form>
<br/>Preview:<br/>

<form name"test" id="test">
<textarea name="preview" cols="120" id="preview" readonly"readonly" onkeyup="splitLine(st,n)" ></textarea>
</form>
</body>
</html>
maar helaas hij werkt niet kan iemand mij het goede voorbeeld geven of op weg welpen zodat het wel werkt.
 
Bij een textarea gebruik je de .value
Code:
<script type="text/javascript">
 // Egel 080214 ;)
 function maxline(area,nr) {
  var s = area.value.replace(/\r?\n/g,'\r\n');
  var p = s.split('\r\n');
  for (var i = 0; i < p.length; i++) {
   if (p[i].length > nr) {
    p.splice(i,0,p[i].substring(0,nr));
    p[i+1] = p[i+1].substring(nr);
    };
   };
  p = p.join('\r\n');
  if (p != s) {
   area.value = p;
   area.scrollTop = 999;
   };
  };
</script>


<textarea cols="20" rows="12" onkeyup="maxline(this,16)"></textarea>
  • Eerst worden de regeleindes omgezet naar \r\n omdat firefox alleen \n gebruikt.
  • Daarna wordt het gesplit in een array (p) van regels.
  • Die worden 1 voor 1 gecontroleerd. Als een regel te lang is worden de eerste tekens ervoor ingevoegd en van regel erna (dezelfde regel die net is opgeschoven) worden de eerste tekens gewist.
  • Dan wordt de array met join weer omgezet naar een string met regeleindes.
  • En als de bewerkte tekst p ongelijk is aan de oorspronkelijke tekst s dan wordt de texarea gevuld met p. :)

Vr.Gr. Egel.
 
Laatst bewerkt:
regel einde werkt niet helemaal goed

He Engel het werkt niet helemaal goed inderdaad gaat hij naar 16 tekens naar de volgende regel.

maar als ik het volgende in type

jij bent goed bezig

verspingt hij alsvolgd

jij bent goed be
zig

terwijl ik een systeem wou maken dat het volgende doet

jij bent goed
bezig

dus dat hij ziet he "be" hoort nog bij "zig" dus ik zet dat in zijn geheel naar de tweede regel
 
Deze zoekt naar de laatste spatie om af te breken:
Code:
<script type="text/javascript">
 // Egel 080221 ;)
 function maxline(area,nr) {
  var s = area.value.replace(/\r?\n/g,'\r\n');
  var p = s.split('\r\n');
  var n;
  for (var i = 0; i < p.length; i++) {
   if (p[i].length > nr) {
    n = nr;
    for (var j = 0; j < nr; j++) if (p[i].charAt(j) == ' ') n = j + 1;
    p.splice(i,0,p[i].substring(0,n));
    p[i+1] = p[i+1].substring(n);
    };
   };
  p = p.join('\r\n');
  if (p != s) {
   area.value = p;
   area.scrollTop = 999;
   };
  };
</script>


<textarea cols="20" rows="12" onkeyup="maxline(this,16)"></textarea>
:)


Vr.Gr. Egel.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan