Andi: Problem mit dyn.Reaktionen auf Eingaben im Formular

Hallo,

Ich stehe gerade vor einem - für mich - riesigem Problem:

Ich habe mehrere Formulare mit variablen Anzahlen an Eingabe- und Pflichtfeldern.

Die Anzahl der zu prüfenden Felder und der Pflichtfelder werden in versteckten Feldern angezeigt:

<input name="eingabefelder" type="hidden" value="0,2,4,6">
<input name="pflichtfelder" type="hidden" value="0,6">

Die Ziffern stellen die fortlaufende Nummer der Felder dar.

Neben jedem Eingabefeld wird die verbleibende Anzahl an zur Verfügung stehenden Zeichen über folgende Funktion angezeigt:

function verbleibende_zeichen(feld, zaehler, maximal)
{
  if (feld.value.length > maximal)
    feld.value = feld.value.substring(0, maximal);
  else
    zaehler.value = maximal - feld.value.length;
}

Nun soll folgende Vorgehensweise umgesetzt werden:

  1. Es wurde in nur einem der beiden Pflichtfelder mindestens ein Zeichen eingegeben => Anzeige der Schaltfläche "Eingaben löschen"

  2. Es wurde in beide Pflichtfelder mindestens ein Zeichen eingegeben => Anzeige der Schaltflächen "Eingaben löschen" und "Eintrag erstellen"

  3. Es wurde in keines der beiden Pflichtfelder, dafür aber in mindestens einem der optionalen Eingabefeldern mindestens ein Zeichen eingegeben => Anzeige der Schaltfläche "Eingaben löschen"

Mein Ansatz zur Umsetzung meines Vorhabens sieht folgendermassen aus:

function verbleibende_zeichen(feld, zaehler, maximal)
{
  var quersumme = 0;

var eingabefeld = document.forms[0].eingabefelder.value.split(",");
  var pflichtfeld = document.forms[0].pflichtfelder.value.split(",");

for (var i = 0; i < pflichtfeld.length; i++)
  {
    var feld_nr_pflicht = pflichtfeld[i];
    if (document.forms[0].elements[feld_nr_pflicht].value != "")
      quersumme += 1;
  }

for (var j = 0; j < eingabefeld.length; j++)
  {
    var feld_nr_optional = eingabefeld[j];

if (document.forms[0].elements[feld_nr_optional].name.indexOf("verbleibend") == -1)
    {
      if (feld_nr_optional == feld_nr_pflicht)
        break;
      else
      {
        if (document.forms[0].elements[feld_nr_optional].value != "")
          anzeigen ("eingaben_loeschen");
        else
          verstecken ("eingaben_loeschen");
      }
    }
  }

if (quersumme > 0)
  {
    if (quersumme == i)
      anzeigen ("eintrag_erstellen");
    else
      verstecken ("eintrag_erstellen");
  }
  else
    verstecken ("eingaben_loeschen");

if (feld.value.length > maximal)
    feld.value = feld.value.substring(0, maximal);
  else
    zaehler.value = maximal - feld.value.length;
}

Das grundsätzliche Anzeigen bzw. Verstecken der Schaltflächen und die Anzeige der verbleibenden Zeichen funktioniert einwandfrei. Deshalb habe ich die entsprechenden Aufrufe hier weggelassen.

Allerdings funktioniert das Anzeigen der Schaltflächen - in Verbindung mit meinem Code - nicht mehr richtig:

Sind beide pflichtfelder mit mindestens einem zeichen belegt, dann wird nur die Schaltfläche "Eintrag erstellen" angezeigt, nicht aber die Schaltfläche "Eingaben löschen".

Wird die Eingabe bei einem der optionalen Feldern begonnen, dann wird die Schaltfläche "Eingaben löschen" nicht angezeigt, obwohl es der Fall sein sollte. Diese Eingabe wird erst ergänzt, wenn mindestens ein pflichtfeld mit ausgefüllt wurde.

Ich habe schon soviel durchprobiert, komme aber einfach nicht auf die richtige Lösung.

Ich hoffe, Ihr könnt mir weiterhelfen.

Schon mal vielen Dank im voraus.

Gruss, Andi