Hans: zeichenanzahl textareafeld

Bei folgenden Script wird das erste Zeichen bei der Eingabe nicht abgezogen und nach dem letzten Zeichen (nach der Alertmeldung) erscheint ein weiteres Zeichen. Wer kann mir helfen das Script korrekt zum laufen zu bringen.

<html>

<head>
<title>Neue Seite 1</title>
<script language="JavaScript">
function zeichen()
{
 var max = 150;
 var doc1 = document.formular.hobbys.value;
 var l = doc1.length + 1;
 var ll = max - l +1;
 if ( ll < 0 ) {
 ll = 0;
 }
 document.formular.zeichen2.value = '(noch ' + ll +' Zeichen) '
 if (doc1.length>max-1) {
 alert(max + ' Zeichen erreicht!');
 }
}

</script>
</head>

<body>
<form name="formular" action="" method="post">
<table>
          <tr>
            <td></td>
            <td><input type="text" name="zeichen2" value="(Maximal 150 Zeichen)" readonly style="border:0;background-color:#0099ff;color:#ffffff;font-size:8pt" /></td>
          </tr>
          <tr>
            <td valign="top">Hobbys:</td>
            <td><textarea name="hobbys" rows="3" cols="25" wrap="virtual" onKeyDown="zeichen()" onClick="zeichen()"></textarea></td>
          </tr>
</table>
</form>
</body>
</html>

  1. ich weiß leider keinen Rat, ich habe das selbe Problem ....

    Gruß
    Katja

  2. Hallo Hans,

    <td><textarea name="hobbys" rows="3" cols="25" wrap="virtual" onKeyDown="zeichen()" onClick="zeichen()"></textarea></td>

    ersetze mal onKeyDown durch onKeyUp, dann sollte es funktionieren.

    Grüße
    Andreas

    --
    "Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning."
    (Rich Cook)
    1. das haben wir schon probiert, es brachte nichts

  3. Hallo Hans,

    hier ein Vorschlag, wie es geht:

    function zeichen()
    {
    var max = 150;
    var doc1 = document.formular.hobbys.value;
    var l = doc1.length + 1;
    var ll = max - l + 1;
    if ( ll < 0 ) {
    ll = 0;
    }
    document.formular.zeichen2.value = '(noch ' + ll +' Zeichen) '

    // Erst meckern, wenn größer als maximale Anzahl
     if (doc1.length>max) {

    alert(max + ' Zeichen erreicht!');

    // Nicht zulässige Zeichen abschneiden
     document.formular.hobbys.value = doc1.substring(0, max);

    }
    }
    [...]

    // Erst prüfen, wenn Zeichen geschrieben wurde
    <td><textarea name="hobbys" rows="3" cols="25" wrap="virtual" onKeyUp="zeichen();" onClick="zeichen()"></textarea></td>

    Grüße
    Andreas

    --
    "Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning."
    (Rich Cook)