Andreas: "Objekt erwartet" bei Funktionsaufruf unter onBlur

Hallo,

Ich stehe kurz vor'm Verzweifeln.

Egal, wie ich nachfolgenden Code auch umstelle, ich erhalte IMMER die Fehlermeldung "Objekt erwartet". Ich habe den Code auf ein Eingabefeld reduziert, da das System bei allen Feldern gleich ist, nur die Parameter variieren:

<html>
  <head>
    <script language="javascript" type="text/javascript" src="JS_formular.js"></script>
  </head>
  <body onload="document.forms[0].elements[1].focus()">
    <form [...]>
      <input type="text" name="name" onblur="ueberpruefung(0,1,0,1)">
    </form>
  </body>
</html>

Die Datei JS_formular.js, die im <head> eingebunden ist und die Funktion "ueberpruefung()" enthält, die bei onblur aufgerufen wird, sieht folgendermassen aus:

[...] Variablen deklarieren [...]

function ueberpruefung(form_nr, feld_nr, feld_art, pflicht)
{
  inhalt = document.forms[form_nr].elements[feld_nr].value;
  laenge = inhalt.length;

if (pflicht == 1)
  {
    if (laenge == 0)
      alert("Pflichtfeld nicht ausgefüllt");
  }

if (laenge < laenge_min[feld_art])
    alert ("Zu kurz");

if (laenge > laenge_max[feld_art])
    alert ("Zu lang");

fehler = zeichen_pruefen(inhalt, feld_art);

if (!fehler)
  {
    if (feld_art == 0)
      namen_formatieren(form_nr, feld_nr);

if (feldart = 4)
      doppelte_zeichen(inhalt, feld_art);
  }
}

Ich weiss einfach nicht mehr weiter.

Gruss, Andreas

  1. Moin!

    Ich stehe kurz vor'm Verzweifeln.

    Ich auch. Bisher war ich strikt der Meinung auch die Formularelemente würden ab 0 gezählt. Du hast nur eines: wieso hat das die Nr. 1?

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
    1. Moin!

      Ach so: wieso nicht onchange?

      MFFG (Mit freundlich- friedfertigem Grinsen)

      fastix®

      --
      Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
      1. Moin :-)

        Wenn ich onchange verwende und das Feld verlasse, dann bekomme ich keine Fehlermeldung, allerdings wird dann auch nicht überprüft, ob ein Pflichtfeld ausgefüllt wurde oder nicht, d.h. die Funktion wird nicht aufgerufen. Wenn ich dann wieder in's Feld zurückspringe, dann wird wieder ein Objekt erwartet (?!?!?). Folglich ist onblur die einzige Möglichkeit, die aber nicht so will, wie sie soll *grml*

        Gruss, Andreas

        1. Ich habe mehrere Felder, nur wollte ich der Übersicht halber nur eines aufführen, da das System bei allen das gleiche ist. Nur die Parameter ändern sich.

          Gruss, Andreas

  2. <html>
      <head>
        <script language="javascript" type="text/javascript" src="JS_formular.js"></script>
      </head>
      <body onload="document.forms[0].elements[1].focus()">

    Dein Formular hat kein "elements[1]", die meisten Programmiersprachen fangen bei null an zu zählen.

    <form [...]>
          <input type="text" name="name" onblur="ueberpruefung(0,1,0,1)">

    Du kannst dir den ganzen schmodder aber sparen, wenn du direkt die Referenz des Feldes übergibst.

    <input type="text" name="name" onblur="ueberpruefung(this,0,1)">

    function ueberpruefung(form_nr, feld_nr, feld_art, pflicht)
    {

    Jetzt:
    function ueberpruefung(feld_ref, feld_art, pflicht)

    inhalt = document.forms[form_nr].elements[feld_nr].value;
      laenge = inhalt.length;

    lokale Variaben solltest du auch immer Lokal halten, da sie sonst von einer anderen Funktion geändert werden könnten.

    var inhalt = feld_ref.value;
    var laenge = inahlt.length;

    Struppi.