Michael Ackermann: ZeichenZähler mit ZählButton und Farbänderung

Hallo

Ich habe ein Problem mit folgendem Script:

<html><head><title>character count</title>

<script  language="JavaScript">
<!--
function Berechne() {
  document.FormName.TITLEzaehler.value =
document.FormName.TITLE.value.length;
}
function automatischZAEHLEN(source, target){
  target.value = source.value.length;
     if (target.style) {
       var l = Number(target.value);
       if (l >= 1 && l < 10)
          target.style.color = 'black';
       if (l > 9 && l < 15)
          target.style.color = 'blue';
       else if (l >= 15)
          target.style.color = 'red';
    }
}
// -->
</script>

</head><body>

<FORM name="FormName">
<INPUT size="80" name=TITLE
onkeypress="automatischZAEHLEN(this, this.form.TITLEzaehler);"
onkeyup="automatischZAEHLEN(this, this.form.TITLEzaehler);">
<br>
<input name="TITLEzaehler" size="2"> <input onClick="Berechne();"
type="button" value="Zähle" >

</form></body></html>

Geht so weit auch, hat aber nur einen Schönheitsfehler der mich bald
wahnsinnig macht.
Und zwar wenn ich beispielsweise 20 Zeichen über die Zwischenanlage einfüge steht im Zählfeld nichts, drücke ich dann auf "Zähle" erscheint das richtige Ergebnis jedoch in Schwarz und nicht wie es sollte in Rot, klar wenn man nun noch ein Zeichen hinzufügt oder eines löscht dann ändert es richtig die Farbe, aber das ist eigentlich das was es sein sollte.
Könntet Ihr mir da BITTE helfen ???
Ich weiß nicht weiter, ich hocke da schon seit Tagen dran, ich hab halt da noch nicht so viel Erfahrungen  :-((

,,,,   ..
Gruß                 _\||///_
Michael              (  O,O  )
---------------oOOo---------------oOOo-----------------
E-Mail to :     Michael@ACWorld.de

  1. Hallo, Michael,

    wenn ich beispielsweise 20 Zeichen über die Zwischenanlage einfüge steht im Zählfeld nichts, drücke ich dann auf "Zähle" erscheint das richtige Ergebnis jedoch in Schwarz und nicht wie es sollte in Rot, klar wenn man nun noch ein Zeichen hinzufügt oder eines löscht dann ändert es richtig die Farbe, aber das ist eigentlich das was es sein sollte.

    wenn ich 20 Zeichen mit Tastenkürzel Strg + V über die Zwischenanlage einfüge steht im Zählfeld 20 in Rot, da dann onkeypress gefeuert wird. Du mußt die Funktion automatischZAEHLEN aber auch bei Änderungen aufrufen, die nicht durch Tastatureingaben herbeigeführt werden. onChange wird (zumindest im Internet Explorer) leider nicht gefeuert, aber onPropertyChange (im Internet Explorer).

    Also versuch's mal so:

    <INPUT size="80" name=TITLE
    onkeypress="automatischZAEHLEN(this,this.form.TITLEzaehler);"
    onkeyup="automatischZAEHLEN(this,this.form.TITLEzaehler);" onPropertychange="automatischZAEHLEN(this,this.form.TITLEzaehler);">

    So klappt's bei mir.

    Grüße,

    Sebastian

    1. Danke, so gehts.

  2. if (l >= 1 && l < 10)
              target.style.color = 'black';
           if (l > 9 && l < 15)
              target.style.color = 'blue';

    http://selfhtml.teamone.de/javascript/sprache/operatoren.htm#rangfolge