DerNordberliner: function CheckInput

Hallöchen,

ich habe ein Formular mit vielen Eingabefeldern erstellt und möchte vor dem Verlassen des Formulars eine Abfrage starten, ob alle Felder ausgefüllt sind oder nicht. Habe ich mit folgenden Eingaben hinbekommen:

<script type="text/javascript">
function CheckInput () {
for (i = 0; i < document.forms[0].elements.length; ++i)
if (document.forms[0].elements[i].value == "") {
alert("Bitte füllen Sie alle Felder mit der Kennzeichnung P aus!");
document.forms[0].elements[i].focus();
return false;
}
return true;
}
  </script>

Nun sind aber in dem Formular auch Auswahlfelder definiert wie zum Beispiel folgendes:

<td align="right">Anrede</td><td><select name="Anrede1" size="1"><option>Bitte ausw&auml;hlen---&gt;</option><option>Frau</option><option>Herr</option></select>

(Die td´s wegen der Darstellung in einer Tabelle.)

Leider kann ich nun in so einem Feld etwas angeben/auswählen oder auch nicht. Es wird mir immer wieder angezeigt, das ich dem Feld etwas eintragen soll.

Wie kann ich dieses Feld nach einer Änderung/Auswahl als "erledigt" betrachten oder wie kann ich dieses Feld bei der Abfrage umgehen?

Der Markus

  1. <td align="right">Anrede</td><td><select name="Anrede1" size="1"><option>Bitte ausw&auml;hlen---&gt;</option>

    <option value="">Bitte auswählen</option>

    Wenn du den Wert der erste Auswahl auf "" setzt, dann ergibt die Prüfung auf .value == "" auch true. Sprich, wenn nichts ausgewählt ist, wird die Fehlermeldung angezeigt. Wenn "Frau" oder "Herr" ausgewählt ist, sollte keine Fehlermeldung erscheinen.

    Mathias

    1. Hallo Mathias,

      danke für die schnelle Antwort aber das Programm ignoriert sämtliche Eingaben, egal ob mit Leer- oder mit ohne Leerzeichen.

      Noch eine Idee?

      Der Markus

      1. Mahlzeit DerNordBerliner,

        danke für die schnelle Antwort aber das Programm ignoriert sämtliche Eingaben, egal ob mit Leer- oder mit ohne Leerzeichen.

        Hast Du denn entsprechende http://de.selfhtml.org/html/formulare/auswahl.htm#listen_absendewert@title=Absendewerte festgelegt? In Deinem ursprünglichen Quelltext nämlich nicht ...

        Noch eine Idee?

        Ja: liefere eine verständliche Problembeschreibung.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. Hallöchen EKKi,

          das war der entscheidene Hinweis. Warum es auch immer erforderlich ist, einen Eintrag mit einem Eintrag zu bestätigen aber Computer sind halt auch nur Menschen.

          Vielen Dank

          1. Mahlzeit DerNordBerliner,

            Warum es auch immer erforderlich ist, einen Eintrag mit einem Eintrag zu bestätigen aber Computer sind halt auch nur Menschen.

            Inwiefern "Eintrag mit einem Eintrag bestätigen"? Wenn Du einen Absendewert angibst, wird dieser bei der Auswahl des entsprechenden Eintrags übertragen - wenn Du keinen angibst, wird das übertragen, was zwischen <option> und </option> steht. Es kann natürlich sein, dass Dein Browser (welchen benutzt Du?) Probleme damit hat, innerhalb einer Auswahlliste unterschiedlich definierte Optionen zu verarbeiten - auch deshalb ist es IMHO erheblich besser und "sauberer", den Wert, den das Formular letztendlich beinhalten soll, explizit anzugeben.

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
            1. Mahlzeit EKKi,

              danke für die schnelle Antwort, funktioniert nun alles bestens.

              Nun noch folgendes, der User der mein Formular aufruft und es ausfüllt wird nach Eingabe aller Fragen zum Formular2 weitergeleitet, dann zu 3 u.s.w.

              Nachdem alle Seiten ausgefüllt wurden, sollen alle Seiten einmal ausgedruckt werden und dann versendet werden. Istdas sehr schwer hinzubekommen?

              Markus

              1. Mahlzeit DerNordberliner,

                danke für die schnelle Antwort, funktioniert nun alles bestens.

                Nun noch folgendes, der User der mein Formular aufruft und es ausfüllt wird nach Eingabe aller Fragen zum Formular2 weitergeleitet, dann zu 3 u.s.w.

                Nachdem alle Seiten ausgefüllt wurden, sollen alle Seiten einmal ausgedruckt werden und dann versendet werden. Istdas sehr schwer hinzubekommen?

                Nein. Du musst nur den Benutzer wieder auf jede (ausgefüllte) Seite schicken und ihn diese dann ausdrucken lassen.

                Alternativ kannst Du natürlich auch eine "Hier-sehen-Sie-nochmal-alle-von-Ihnen-eingegebenen-Daten"-Seite basteln, auf der man alles nochmal sehen und gesammelt ausdrucken kann. Ansonsten gilt:

                Zitat 1040

                MfG,
                EKKi

                --
                sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                1. Nen juten Morjen

                  Alternativ kannst Du natürlich auch eine "Hier-sehen-Sie-nochmal-alle-von-Ihnen-eingegebenen-Daten"-Seite basteln, auf der man alles nochmal sehen und gesammelt ausdrucken kann.

                  Genau DAS wäre es, ich möchte nun nicht den Eindruck vermitteln, das du mir alles schreiben sollst aber sei doch bitte so nett und mach es trotzdem. Ich bin halt eben noch ein Anfänger.

                  Danke im Voraus

                  1. Mahlzeit DerNordBerliner,

                    Alternativ kannst Du natürlich auch eine "Hier-sehen-Sie-nochmal-alle-von-Ihnen-eingegebenen-Daten"-Seite basteln, auf der man alles nochmal sehen und gesammelt ausdrucken kann.

                    Genau DAS wäre es, ich möchte nun nicht den Eindruck vermitteln, das du mir alles schreiben sollst aber sei doch bitte so nett und mach es trotzdem.

                    Öhm, nein.

                    1. kannst das nur Du, da nur Du weißt, wo sich die Daten befinden, welche Form sie haben, wie die Formulare aussehen, wo die Benutzer ihre Daten eingegeben haben, wie die Übersichtsseite aussehen soll usw. und

                    2. habe ich hier noch ein bisschen was anderes zu tun ...

                    Ich bin halt eben noch ein Anfänger.

                    Ja und?

                    MfG,
                    EKKi

                    --
                    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  2. Hallöchen,

    Hallo der Markus!

    Nun sind aber in dem Formular auch Auswahlfelder definiert wie zum Beispiel folgendes:

    <td align="right">Anrede</td><td><select name="Anrede1" size="1"><option>Bitte ausw&auml;hlen---&gt;</option><option>Frau</option><option>Herr</option></select></td>

    ist klar: <option>Frau</option> und <option>Mann</option> enthalten keine value also funktioniert das script einwandfrei.
    Versuch es mit <option value=Frau">Frau</option> und <option value="Mann">Mann</option>
    im HTML-Teil oder prüfe im Script nicht auf .value sondern auf .selectedIndex

    siehe auch "Attribute" im SelfHTML bzw. .value und .selectedIndex

    Gruß, Markus**

    1. ist klar: <option>Frau</option> und <option>Mann</option> enthalten keine value also funktioniert das script einwandfrei.
      Versuch es mit <option value=Frau">Frau</option> und <option value="Mann">Mann</option>
      im HTML-Teil oder prüfe im Script nicht auf .value sondern auf .selectedIndex

      <option>Mann</option> sollte identisch zu <option value="Mann">Mann</option> sein und ein select-Element hat auch eine value-Eigenschaft, die "Mann" enthalten sollte, wenn selbige Option gewählt ist. -- In allen Browsern, außer im IE. Dort kann man wie gesagt entweder doppelt gemoppelt <option value="Mann">Mann</option> schreiben oder den selectedIndex prüfen (je nach <http://de.selfhtml.org/javascript/objekte/elements.htm#type@title=Typ des Eingabefeldes>):

      var field = document.forms[0].elements[i];  
      if (  
       field.type == "select-one" && field.selectedIndex == 0  
       ||  
       field.type == "text" && field.value == ""  
      ) {  
       alert("Bitte füllen Sie alle Felder mit der Kennzeichnung P aus!");  
       field.focus();  
       return false;  
      }
      

      Mathias

  3. Hallöchen,

    nachdem ein Problem schnell gelöst wurde, vielen Dank, hier gleich meine beiden neuen:

    In einem Formular wird vor dem Absenden geklärt, ob alle Felder ausgefüllt wurden, hiermit:

    <script type="text/javascript">
    function CheckInput () {
    for (i = 0; i < document.forms[0].elements.length; ++i)
    if (document.forms[0].elements[i].value == "") {
    alert("Bitte füllen Sie alle Felder mit der Zusatz P aus!");
    document.forms[0].elements[i].focus();
    return false;
    }
    return true;
    }
      </script>

    Jetzt gibt es aber auch ein Radiobuttom der bei NEIN angeklickt alle weiteren Felder ignoriert. Sprich: Sind Sie schwanger? Nein X Dann weiter mit Frage 3. Somit kommt in dem Feld: In der wievielten Woche? ja kein Eintrag rein. Was nun mit der Abfrage?

    Zweite Sache:
    Wie kann ich es schaffen, das beim Ausfüllen mehrerer Formulare und beim ständigen Wechsel zwischen den Formularen über eine Liste, so sind die User eben, die einmal eingegebenen Daten nicht verloren gehen und bis zum Absenden und Drucken aller Formulare erhalten bleiben?`

    Der Markus

    1. Hi,

      Jetzt gibt es aber auch ein Radiobuttom der bei NEIN angeklickt alle weiteren Felder ignoriert. Sprich: Sind Sie schwanger? Nein X Dann weiter mit Frage 3. Somit kommt in dem Feld: In der wievielten Woche? ja kein Eintrag rein. Was nun mit der Abfrage?

      Erst schauen, welcher Radio-Button angekreuzt ist, und davon abhaengig weitere Felder ueberpruefen oder ignorieren.

      Wie kann ich es schaffen, das beim Ausfüllen mehrerer Formulare und beim ständigen Wechsel zwischen den Formularen über eine Liste, so sind die User eben, die einmal eingegebenen Daten nicht verloren gehen und bis zum Absenden und Drucken aller Formulare erhalten bleiben?`

      Daten in versteckten Formularfeldern von Seite zu Seite mitschleifen, oder serverseitig in einer Session ablegen.

      MfG ChrisB

      --
      „This is the author's opinion, not necessarily that of Starbucks.“