ja javascript... ala
----
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!--
function textCounter(field, countfield, maxlimit) {
if (field.value.length > maxlimit) // if too long...trim it!
field.value = field.value.substring(0, maxlimit);
// otherwise, update 'characters left' counter
else
countfield.value = maxlimit - field.value.length;
}
// End -->
</script>
</HEAD>
<BODY>
<center>
<form name=myform action="YOUR-SCRIPT.CGI">
<font size="1" face="arial, helvetica, sans-serif"> ( You may enter up to 160 characters. )<br>
<textarea name=message cols=40 rows=4 onKeyDown="textCounter(this.form.message,this.form.remLen,125);" onKeyUp="textCounter(this.form.message,this.form.remLen,125);"></textarea>
<br>
<input readonly type=text name=remLen size=3 maxlength=3 value="160"> characters left</font>
</form>
</center>
Tak for svar, men problemet med at skifte line blev ikke løst, curseren i tekstfeltet skifter ikke linje når der er indtastet over 40 tegn i linjen. Der er forskel på tegnenes brede, og derfor er det svært at benytte cols=40.
Følgende virker i FF
--------------------
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!--
function textCounter(field, countfield, maxlimit) {
if (field.value.length == 40 || field.value.length == 81|| field.value.length == 122){
field.value = field.value+"\n";
}else if (field.value.length > maxlimit){
field.value = field.value.substring(0, maxlimit);
}else{
countfield.value = maxlimit - field.value.length;
}
}
// End -->
</script>
</HEAD>
<BODY>
<center>
<form name=myform action="YOUR-SCRIPT.CGI">
<font size="1" face="arial, helvetica, sans-serif"> (max 40 tegn i max 4 linjer)<br>
<textarea name=message cols=50 rows=4 onKeyDown="textCounter(this.form.message,this.form.remLen,163);" onKeyUp="textCounter(this.form.message,this.form.remLen,163);"></textarea>
<br>
<input readonly type=text name=remLen size=3 maxlength=3 value="163"> characters left</font>
</form>
</center>
---------------
I IE laver den et mellemrum og tæller derfor een mere
Overvej i øvrigt om "\n" skal tælle med i de 40 tegn?
For man kan ikke lave linjeskift uden det mindst fylder eet tegn
Du kan rimelig snildt selv rette i koden. Du kan se der sammenlignes med 40,81,122
Det er fordi linjeskiftet ikke tælles med i de 40 så der er 41 i hver linje. Det er også derfor størrelserne nederst på siden er 163
Jeg ved ikke hvorfor der er forskel på FF og IE på det punkt
Det virker som om FF tolker "\n" promte og rykker en linje ned hvorimod IE indsætter det og det på skærmen ligner et blanktegn indtil næste tegn indtastes.
Prøv evt og kopiere koden ind i javascript kategorien, for der er muligvis en som ved mere :o)
Et andet dillemma er hvis man skriver og så vil slette noget. Når man så når til et "\n" ja så bliver scriptet jo ved med at sætte den karakter ind. Derfor kan man ikke slette forbi den! Man kan heller ikke bare markere den linje man ønsker rette og så slette i den. Så snart man har slettet et tegn vil den danne en ny "\n" for enden.
Test lige selv og overvej mulighederne. Som sagt er der nok en i Javascript kategorien som ved mere. (da jeg godt kan se mit foreslag ikke er så godt)
--------
Men du kan lave et tjek i php når din form med dit textarea submittes og så give en fejlmeddelelse hvis det ikke stemmer overens.
Jeg tror denne løsning vil være bedre for dig:
----------
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!--
function tjek(){
var x = document.getElementsByName("message");
var y = x[0].value.split('\n');
if(y.length > 4){
alert("Der må max være 4 linjer");
return false;
}else{
for (i = 0; i < y.length; i++){
if(y[i].length > 40){
alert("Der må max være 40 tegn pr linje");
return false;
}
}
}
return true;
}
// End -->
</script>
</HEAD>
<BODY>
<center>
<form name=myform action="#" onsubmit="return tjek()">
<font size="1" face="arial, helvetica, sans-serif"> (max 40 tegn i max 4 linjer)<br>
<textarea name=message cols=50 rows=4></textarea>
<input type=submit name=submit value=submit></input>
</form>
</center>
Jeg tror jeg vil oprette spørgsmålet i JavaScript sektionen som busschou foreslår.
Løsningen med alert vinduet, er ikke så god synes jeg, da man jo stadig ikke kan se tekst ombrydningen på skærmen. Men tak for forsøget. Jeg har foresten brugt busschous text counter så jeg vil gerne give point, lig trygt et svar...
jamen ok så og pøj pøj med det :o)