Hallo zusammen,
ich habe in meiner Textarea schaut so aus.
<textarea name='msg' maxlength='500' onKeyUp='CheckStr(this)' onKeyDown='CheckStr(this)' STYLE='overflow:hidden' cols='50' rows='10' wrap='physical'>Text bitte eingeben</textarea>";
Und dieser Bereich soll als Druckvorlage dienen also cols=50 und rows=10 und maxlength=500.
Habe nun ein Script geschrieben, welches das eigentlich händeln soll.
function CheckStr(userInput)
{
String.prototype.rtrim = function (clist) {
if (clist)
return this.replace (new RegExp ('[' + clist + ']+$'), '');
return this.replace (/\s+$/, '');
}
var StrLen = window.document.pruef.msg.value.length;
var zeilen = window.document.pruef.msg.rows;
var spalten = window.document.pruef.msg.cols;
var s = window.document.pruef.msg.value;
var z = "";
var a = "";
if (StrLen > 500 ) {
window.document.pruef.msg.value = window.document.pruef.msg.value.substring(0,497) + "...";
alert("Sie haben die maximale Länge von 500 Zeichen überschritten. Ihr Eingabe wurde auf 500 Zeichen gekürzt" );
window.document.pruef.msg.value += window.document.pruef.msg.value.substring(0,50) + "\n";
a = window.document.pruef.msg.value.split("\n");
if(a.length > zeilen) {
alert("Im Druckbereich können nur "+ zeilen +" Zeilen angezeigt werden");
for(var i = 0; i < zeilen-1; i++)
z += a[i]+ "\n";
z += a[i];
window.document.pruef.msg.value = z.rtrim();
}
StrLeft = 0;
}
else {
StrLeft = 500 - StrLen;
a = window.document.pruef.msg.value.split("\n");
if(a.length > zeilen) {
alert("Im Druckbereich können nur "+ zeilen +" Zeilen angezeigt werden");
for(var i = 0; i < zeilen-1; i++)
z += a[i]+ "\n";
z += a[i];
window.document.pruef.msg.value = z.rtrim();
}
}
}
wenn ich 10 Zeilen per Enter eingebe funktioniert es. Gebe ich aber einen String ein der über z.B. 3 Zeilen geht, erkennt er es trotz wrap=Physical nicht als \n also Zeilenumbruch. Wie könnte ich hier einen Zeilenumbruch erzwingen? Also das es wirklich nicht über 10 Zeilen raus geht.
Gruß
Stefan