Ka: Vor Abschnitt ausblenden Eingaben prüfen

Hallo,
hoffe, ihr könnt mir helfen.

Ich habe ein Formular mit mehreren Abschnitten, die nach Bedarf ein- oder ausgeblendet werden können.
Die Funktion dazu lautet:

function showPage(id)
{
   for(i=0;i<box.length;i++)
  {
          document.getElementById(box[i]).style.display     = "none";
          document.getElementById('btn_'+box[i]).className  = "inactive";
  }

document.getElementById(id).style.display     = "block";
  document.getElementById('btn_'+id).className = "active";
}

Mittels Hyperlink wird diese dann aufgerufen, z.B.

<a href="#" class="active" id="btn_Seite1" onclick="showPage('Seite1'); return false;">&nbsp;Seite 1&nbsp;</a>

Funktioniert auch alles. Nun möchte ich aber vor jedem Seitenwechsel prüfen lassen, ob bestimmte Eingaben vorgenommen wurden, also z.B. das Alter:

function chkFormular () {
 if (document.meran.alter_0.value == "") {
  alert("Bitte das Alter eingeben!");
  document.meran.alter_0.focus();
  return false;
 }
}

Wo und wie muss ich diese Funktion einbauen, damit der Abschnitt nur ausgeblendet wird, wenn die Eingabe vorgenommen wurde?

Danke und viele Grüße,
Ka

  1. Hi,

    Ich habe ein Formular mit mehreren Abschnitten, die nach Bedarf ein- oder ausgeblendet werden können.

    Funktioniert auch alles. Nun möchte ich aber vor jedem Seitenwechsel prüfen lassen, ob bestimmte Eingaben vorgenommen wurden

    Wo und wie muss ich diese Funktion einbauen, damit der Abschnitt nur ausgeblendet wird, wenn die Eingabe vorgenommen wurde?

    Na vor dem Ausblenden des aktuellen und dem Einblenden des nächsten ausgewählten Abschnittes vermutlich.

    Du könntest ein switch-statement nutzen, dass den Inhalt der übergebenen ID nutzt, um die zum jeweiligen Abschnitt gehörenden Überprüfungen vorzunehmen.
    Dabei setzt du dann ein Flag, je nachdem ob alle Bedingungen erfüllt wurden oder nicht - und nur wenn ja, dann blendest du anschliessend aus und ein.

    MfG ChrisB

    --
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
    1. Vielen Dank. Ich versteh zwar nur Bahnhof, weil ich Anfänger bin und mich irgendwie durchwurschtel, aber vielleicht krieg ich dank deiner Stichworte was hin.

      Danke und Gruß,
      Ka

      1. Hi!

        Du sollst eine Funktion schreiben. Diese Funktion nutzt ein switch (eine Kontrollstruktur). Dieses switch ueberprueft ja nach uebergebener Formular ID die von die benoetigten Werte des jeweiligen Abschnitts. Wenn die Ueberpruefung fehlschlaegt setzt du ein Flag (eine Variable) auf einen Wert, der signalisiert dass es einen Fehler gab.
        Bevor Du nun ein und ausblendest, ueberpruefst Du diesen Wert.

        War das verstaendlicher? Im Grunde sollst Du einfach das nachprogrammieren, was in deinem Kopf vorgeht, wenn Du das manuell machst:

        Ich will diesen Bereich ausblenden. Moment, da gibts Bedingungen. Schaun wir mal. Der Name fehlt. Das geht nicht. Merken. Die Mailadress ist da. Okay. Also den Bereich ausblenden. Gabs ein Problem? Stimmt. Der Name war ja nicht da. Dann lass ichs.

        --
        "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
              - T. Pratchett
        1. Danke.
          Bevor ich das probiere, noch kurz: ich hab jetzt folgendes probiert:

          <a href="#" class="inactive" id="btn_Seite2" onclick="chkFormular(); showPage('Seite2');return false;">&nbsp;Seite 2&nbsp;</a>

          Also einfach beide Funktionen hintereinander aufgerufen. Ich bekomme auch die Meldung, dass eine Eingabe fehlt, aber der Abschnitt wird dennoch eingeblendet. Gibts da nicht irgendeinen Befehl, dass Funktion 2 nur aufgerufen wird, wenn Funktion 1=true?

          Nochmals Danke und Gruß,
          Ka

          1. Hi,

            <a href="#" class="inactive" id="btn_Seite2" onclick="chkFormular(); showPage('Seite2');return false;">&nbsp;Seite 2&nbsp;</a>

            Also einfach beide Funktionen hintereinander aufgerufen. Ich bekomme auch die Meldung, dass eine Eingabe fehlt, aber der Abschnitt wird dennoch eingeblendet.

            Na das ist doch wohl logisch, oder?

            Gibts da nicht irgendeinen Befehl, dass Funktion 2 nur aufgerufen wird, wenn Funktion 1=true?

            Fallunterscheidungen kann man mit IF machen, ja.

            MfG ChrisB

            --
            “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
            1. Sorry, für mich ist das alles nicht logisch, sonst würde ich nicht fragen.

              Ich probier es mit if. Danke

              Ka

              1. Mit

                <a href="#" class="inactive" id="btn_Seite2" onclick="return chkFormular() && showPage('Seite2');return false">&nbsp;Seite 2&nbsp;</a>

                funktionierts jetzt.

                1. aloha

                  <a href="#" class="inactive" id="btn_Seite2" onclick="return chkFormular() &&

                  showPage('Seite2');return false">&nbsp;Seite 2&nbsp;</a>

                  wow. Eben noch war gar nichts logisch und jetzt sowas.

                  --
                  "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
                        - T. Pratchett
                  1. Hi, nochmal ich,
                    also, ich habe 5 verschiedenen DIVs, die mittels display:block bzw. display:none ein- oder ausgeblendet werden, wie scho beschrieben.
                    Vor dem Einblenden des jeweils nächsten DIV wird geprüft, ob alle Eingaben des aktuellen DIVs vorhanden sind.

                    <a href="#" class="active" id="btn_Seite1" onclick="return chkFormular1 () && showPage('Seite1'); return false;">&nbsp;Seite 1&nbsp;</a>

                    Pro DIV gibt es eine Check-Funktion (chkFormular 1 () bis chkFormular5 ()).

                    Wenn ich aber jetzt z.B. vom 2. zum 3. DIV wechseln möchte, muss ja erst geprüft werden, welches DIV denn nun das aktuelle ist, um die entsprechende Funktion aufzurufen. Und da hakt es bei mir.
                    Kann mir jemand sagen, wie ich das hinkriegen könnte?

                    Danke im Voraus.
                    MfG,

          2. [latex]Mae  govannen![/latex]

            <a href="#" class="inactive" id="btn_Seite2" onclick="chkFormular(); showPage('Seite2');return false;">&nbsp;Seite 2&nbsp;</a>

            Also einfach beide Funktionen hintereinander aufgerufen. Ich bekomme auch die Meldung, dass eine Eingabe fehlt, aber der Abschnitt wird dennoch eingeblendet. Gibts da nicht irgendeinen Befehl, dass Funktion 2 nur aufgerufen wird, wenn Funktion 1=true?

            IF

            Du solltest aber mal ins Auge fassen, die Logik in einen Javascript-Bereich auszulagern und im onclick-Attribut nur eine Funktion zu notieren, die dann weitere Funktionen aufrufen kann. Zur Referenz kannst du dann this benutzen:

            ... onclick="deinefunktion(this)" ...

            Cü,

            Kai

            --
            Even if you are a master of jQuery, you can only create mediocre (at best)
            scripts. The problem is that the authors you rely on have not mastered the
            DOM themselves. It's like one blind guy leading another off a cliff (D.Mark/clj)
            Foren-Stylesheet Site Selfzeug JS-Lookup
            SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?
          3. Hi!

            Also einfach beide Funktionen hintereinander aufgerufen. Ich bekomme auch die Meldung, dass eine Eingabe fehlt, aber der Abschnitt wird dennoch eingeblendet. Gibts da nicht irgendeinen Befehl, dass Funktion 2 nur aufgerufen wird, wenn Funktion 1=true?

            Ja. Packe beide Funktionen in eine die einen Kontrollmechanismus enthaelt oder aendere die zweite ab und fuege dort einen Mechanismus ein.

            --
            "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
                  - T. Pratchett
  2. Nochmal ich,
    Hi,

    ich habe 5 verschiedenen DIVs, die mittels display:block bzw. display:none ein- oder ausgeblendet werden.
    Vor dem Einblenden des jeweils nächsten DIV wird geprüft, ob alle Eingaben des aktuellen DIVs vorhanden sind.

    <a href="#" class="active" id="btn_Seite1" onclick="return chkFormular1 () && showPage('Seite1'); return false;">&nbsp;Seite 1&nbsp;</a>

    Pro DIV gibt es eine Check-Funktion (chkFormular 1 () bis chkFormular5 ()).

    Wenn ich aber jetzt z.B. vom 2. zum 3. DIV wechseln möchte, muss ja erst geprüft werden, welches DIV denn nun das aktuelle ist, um die entsprechende Funktion aufzurufen. Und da hakt es bei mir.
    Kann mir jemand sagen, wie ich das hinkriegen könnte?

    Danke im Voraus.
    MfG,