selfhtml.de - Alles für den Webmaster!

 

Anzeige: Goneo - Du machst das Web!

Anzeige: united-domains - Die ganze Welt der Domains

united domains - jetzt Wunsch-Domain sichern!

Einfache & schnelle Domain-Registrierung zu fairen Preisen ohne Einrichtungsgebühren. Mehr als 250 Domain-Endungen aus einer Hand inklusive E-Mail- & Web-Weiterleitung. Einzigartiges Domain-Portfolio zur bequemen & sicheren Verwaltung Ihrer Domain-Namen.

Jetzt Domain-Check bei united-domains!

Formularüberprüfung mit mehreren Feldern (was: 2 Variable)

Autor: PointedEars [Beiträge: 4009]
Datum: 09.03.2010 01:09:54

> ich wollte mal fragen, ob es in JavaScript
> möglich ist, aus mehreren Formularfeldern zum
> Formularcheck eine Variable zu erstellen?

Dann tu's doch einfach ;-)

> vereinfachtes Beispiel:
> ich habe ein Formular, in dem ein Termin
> ausgewählt werden kann, und zwar per
> Pull-Down-Menü:

Die korrekte Bezeichnung wäre wohl Drop-Down-Menü; allerdings ist die Darstellung von SELECT-Elementen nicht abschliessend definiert.  Auf meinem iPhone z.B. wird daraus eine Roll-Liste ähnlich wie bei einem Spielautomat; also nix Dropdown.

> <select
> name="termin_datum_tag">01</select>
> <select
> name="termin_datum_monat">05</select>
> <select
> name="termin_datum_jahr">2010</select>

Ich geh' mal davon aus, dass das zu stark gekürzter Quelltext ist, denn so wäre es ungültig (mindestens ein OPTION-Element fe lt jeweils) und hätte auch keine Chance, als Dropdown dargestellt zu werden (size="1" fe lt).

> oder
>
> <input type="checkbox"
> name="termin_datum_absprache" value="nach
> Absprache">

Das ist Unfug.  Möglicherweise meinst Du

  <label><input type="checkbox"
    name="termin_datum_absprache">nach Absprache</label>
  
> Um ein Formularcheck durchzuführen, würde ich
> gerne den inhalt der listen tag, monat, jahr zu
> einer Variable termin_datum zusammenfassen, um
> anschließend ein Formularcheck ausführen zu
> lassen:
>
> if(document.notizbogen.termin_datum.value > ""

Das ist immer wahr, wenn der Wert auf der linken Seite nicht leer ist.  `if (linkeSeite)' ist effizienter.

> &&
> document.forms["notizbogen"].elements["termin_datum_absprache"].checked
> == true)

Ist Dir klar, dass Du hier dasselbe Objekt mehrfach referenzierst?  Ausserdem ist der typkonvertierende Vergleich mit `true' oder `false' immer überflüssig.

> {
> alert("Entweder Termin ODER nach Absprache
> auswählen");

  window.alert(...);

> document.notizbogen.termin_datum_tag.focus();

Und hier schon wieder.  Standardkonform müsste es ausserdem

  document.forms["notizbogen"].elements["termin_datum_tag"].focus();

heissen.

> return false;
> }
>
> ich steh irgendwie auf dem Schlauch, da ich keine
> Möglichkeit finde, aus termin_datum_tag,
> termin_datum_monat, termin_datum_jahr eine
> Variable termin_datum zu erstellen.

Mir ist nicht ganz klar, was genau Du erreichen möchtest, wahrscheinlich auch weil wesentliche Teile wie Funktionsdeklaration und -aufruf fe len.

Möglicherweise suchst Du das Folgende (Quickhack):

  <script type="text/javascript">
    function isHostMethod(o, p)
    {
      if (!o)
      {
        return false;
      }

      var t = typeof o[p];
      return /bunknownb/i.test(t) || /b(function|object)b/i.test(t) && o[p];
    }

    function getSelectedValue(oSelect)
    {
      var i;

      if (!oSelect
          || typeof oSelect.selectedIndex == "undefined"
          && ((i = oSelect.selectedIndex) || true)
          || i < 0)
      {
        return "";
      }

      return oSelect.options[i].value || "";
    }

    function validateForm(f)
    {
      var
        es = f.elements,
        oTag = es["termin_datum_tag"],
        sTag = getSelectedValue(oTag),
        sMonat = getSelectedValue(es["termin_datum_monat"]),
        sJahr = getSelectedValue(es["termin_datum_jahr"]),
        bAbsprache = es["termin_datum_absprache"].checked;

      if (bAbsprache && (sTag + sMonat + sJahr))
      {
        window.alert("Bitte entweder einen Termin oder "Termin nach Absprache" auswählen.");

        if (isHostMethod(oTag, "focus"))
        {
          eval("try { oTag.focus(); } catch (e) {}");
        }

        return false;
      }

      var termin_datum = [sJahr, sMonat, sTag].join("-");

      /* tu was mit termin_datum */

      return true;
    }
  </script>

  <form onsubmit="return validateForm(this)">
    ...
  </form>

Ich würde allerdings den Fokus auf das Element setzen, dessen ausgewählter Wert leer ist, und den Datumswert erst serverseitig berechnen.


PointedEars


Beiträge

Antwort schreiben

Username: Usernamen registrieren
Passwort: Passwort vergessen?
Thema:
  Bitte benutze für deinen Beitrag die Groß-/Kleinschreibung!
Beitrag:
Link (URL):
Titel für Link:
Grafik (URL):
  Die Breite der Grafik darf 468 Pixel nicht überschreiten.
 
E-Mail-Benachrichtigung:



Zum Abschicken deines Beitrags bitte die Schaltfläche "Abschicken" nur einmal anklicken und warten. Der Server braucht manchmal einige Zeit, bis er den Beitrag in die Datenbank übernommen hat. Wenn du die Schaltfläche mehrmals drückst, erscheint dein Beitrag auch mehrmals im Forum.

Bewerten Sie Ihren Webhosting-Provider

Webhosting Provider bewerten und Apple iPad gewinnenWie zufrieden sind Sie mit Ihrem Webhosting-Provider? Gibt es Probleme beim Service, mit der Performance oder der Abrechnung?

Teilen Sie jetzt Ihre Erfahrungen mit anderen Webmastern und schreiben Sie eine Provider-Bewertung. Mit etwas Glück können Sie ein Apple iPad gewinnen!

Weitere Informationen und Teilnahme...