Newbie: onblur und Verlassen der Seite

Hallo,
wenn der Anwender den IE mit Javascript verwendet, mache ich die Feldprüfungen im Formular mit "onblur=....".
Wenn ich dann aber, ohne das Formular auszufüllen die Seite verlasse (z.B 'home'-Icon oder andere URL) wird die onblur-Prüfung aufgerufen.
Wie kann ich das verhindern?
Schönen Abend

  1. echo ($light == true) ? 'Guten Tag,' : 'Guten Abend,';

    hmm indem du nicht onblur benutzt? Onblur wird nun mal aufgerufen wenn du ein Formularfeld verlässt. Vielleicht vorm Absenden Prüfen,
    oder das Feld davor wenn man ins nächste klickt. Sonst solltes du vielleicht etwas genauer werden, was du genau vor hast, wenn dir das nicht weiterhilft.

    Grüße

    Markus

    --
    Das Böse ist grau ... color:#666;
    1. Habe vor langer Zeit einen thread verfolgt (welchen?), in dem ein Prblem geschildert wurde mit der Abfrage von Feldern.
      Da wurd geraten onchange=.... aber beim IE onblur=. Warum weiß ich wie gesagt nicht mehr. Ich hatte mir das notiert und jetzt realisiert - mit dem beschriebenen Effekt.

      1. Yerf!

        Da wurd geraten onchange=.... aber beim IE onblur=. Warum weiß ich wie gesagt nicht mehr.

        onchange ist problematisch, wenn man im Eventhandler den Wert des Feldes ändert. Eine erneutes Trigern des onchange findet immer dann statt, wenn der User etwas anderes eingibt als beim letzten mal, nicht wenn sich der eingegebene Wert von dem durch JS gesetzten unterscheidet. D.h. wenn der User nach einer automatischen korrektur des Wertes durch onchanhe den "seinen" Wert nochmals einträgt wird onchange nicht nochmals ausgelöst (betrifft aber nur den IE).

        Ich hatte mir das notiert und jetzt realisiert - mit dem beschriebenen Effekt.

        onblur ist leider auch Problematisch, genau dann wenn man die Seite verlässt, oder auch nur auf ein Programm im Hintergrund wechselt. Hier sollte man nichts machen, das den Focus des Browsers zurückholt, vor allem keinen Alert. Ich hab dass dann immer so gelöst, dass ich in onblur einen Hinweis auf die Seite schreibe (<span> einblenden oder Hintergrundfarbe ändern) und im onsubmit erst einen Alert bringe, wenn die Werte immer noch nicht passen.

        Gruß,

        Harlequin

        --
        <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
        1. Danke Harlekin,

          Ich hab dass dann immer so gelöst, dass ich in onblur einen Hinweis auf die Seite schreibe (<span> einblenden oder Hintergrundfarbe ändern) und im onsubmit erst einen Alert bringe, wenn die Werte immer noch nicht passen.

          Könntest Du mir dies bitte noch genauer erläutern, am liebsten mit einem Beispiel (damit ich es als Anfänger verstehe).
          Mit dankbarem Gruß
          Newbie

          1. Yerf!

            Könntest Du mir dies bitte noch genauer erläutern, am liebsten mit einem Beispiel (damit ich es als Anfänger verstehe).

            Grob gesagt so:

            zu jedem Input noch ein Span mit hinweistext:
            <input type="text" name="text1" onblur="check();"> <span id="text1msg" style="visibility:hidden">Inhalt falsch</span>

            function check()
            {
              if (-- hier prüfen --)
              { /* alles ok */
                document.getElementById(this.name+"msg").style.visibility = "hidden";
              }
              else
              { /* Fehler */
                document.getElementById(this.name+"msg").style.visibility = "";
              }
            }

            und im Formular ein onsubmit:
            <form action="post" target=".." onsubmit="return checkall();">

            function checkall()
            {
              --Alle Elemente nochmals Prüfen--
              if (--fehlerhafte elmente gefunden--)
              {
                alert("Falsche Eingaben bitte korrigieren");
                return false;
              }
              return true;
            }

            Die Prüfung hab ich jetzt mal rausgelassen, da sie von deinem speziellen Anwendungsfall abhängt. Aber ich denke das Grobkonzept sollte klar werden. Das return true/false im checkall() steuert, ob das Formular tatsächlich abgeschickt wird oder nicht.

            Gruß,

            Harlequin

            --
            <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
            1. Super!
              Danke!