Tom2748: Pflichtfeldprüung abhängig vom Vorhandensein eines Feldes

Hallo zusammen,

Situation:
Es wird ein HTML Formular Dokument mit INPUT Feldern erstellt.
Beim Submit soll via JS geprüft werden, ob ein value vorhanden ist.
Soweit, so gut.
Das Problem:
Das HTML Dokument verfügt nicht immer über die gleichen Formularinhalte.
Der Feldname X kommt jetzt vor, bei der Erstellung des nächsten Dokuments aber nicht.
Ist es möglich, den JS Check für INPUT Feld X nur durchzuführen, wenn INPUT Feld X auch im HTML Dokument vorhanden ist?

Danke und Gruß

  1. Hallo,

    Es wird ein HTML Formular Dokument mit INPUT Feldern erstellt.
    Beim Submit soll via JS geprüft werden, ob ein value vorhanden ist.

    das ist hoffentlich der optionale Teil. Da JS immer umgangen werden kann, sollte auf jeden Fall auch eine serverseitige Überprüfung stattfinden.

    Das HTML Dokument verfügt nicht immer über die gleichen Formularinhalte.
    Der Feldname X kommt jetzt vor, bei der Erstellung des nächsten Dokuments aber nicht.

    Klingt nach einem schlecht durchdachten Konzept.
    Ändern sich nur die Feldnamen, oder auch die komplette Struktur? Falls sich nur die Feldnamen ändern, könntest du die Felder auch über deren Index (d.h. deren Position im DOM) adressieren.

    Ist es möglich, den JS Check für INPUT Feld X nur durchzuführen, wenn INPUT Feld X auch im HTML Dokument vorhanden ist?

    Natürlich. Mit getElementsByName(), angewandt auf das Formular, bekommst du eine Liste (quasi ein Array) aller Elemente mit einem bestimmten Namen. Diese Liste hat eine length-Eigenschaft. Wenn dieser Wert 0 ist, gibt es im betrachteten Dokumentteil kein Element mit dem gewünschten Namen.

    Ciao,
     Martin

    --
    Soziologen sind nützlich, aber keiner will sie haben.
    Bei Informatikern ist es gerade umgekehrt.
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Hallo,

      Es wird ein HTML Formular Dokument mit INPUT Feldern erstellt.
      Beim Submit soll via JS geprüft werden, ob ein value vorhanden ist.

      das ist hoffentlich der optionale Teil. Da JS immer umgangen werden kann, sollte auf jeden Fall auch eine serverseitige Überprüfung stattfinden.

      Das ist unerheblich. Die Verarbeitung findet innerhalb eines CMS statt. Nur ein eingeschränkter Nutzerkreis mit vorgegebener Browsereinstellung bedient das Formular. Das endgültig statisch erstellte Dokument verwendet kein JS mehr. Die Alternative zu dieser Art der Pflichtfeldprüfung wäre eine umständliche Perl Programmierung.

      Das HTML Dokument verfügt nicht immer über die gleichen Formularinhalte.
      Der Feldname X kommt jetzt vor, bei der Erstellung des nächsten Dokuments aber nicht.

      Klingt nach einem schlecht durchdachten Konzept.
      Ändern sich nur die Feldnamen, oder auch die komplette Struktur? Falls sich nur die Feldnamen ändern, könntest du die Felder auch über deren Index (d.h. deren Position im DOM) adressieren.

      Dokument A kann das Formularfeld INPUTX enthalten. Das Problem: Beim nächsten Aufruf von Dokument A lautet der Feldname nicht mehr INPUTX sondern INPUTX_0_0_25. LediglichINPUTX bleibt gleich. Alles was mit INPUTX beginnt, muss aber beim Submit geprüft werden. Ich kann dem INPUT Feld aber eine wie auch immer geartete kennzeichnung zuweisen, unabhängig vom Feldnamen.

      Ist es möglich, den JS Check für INPUT Feld X nur durchzuführen, wenn INPUT Feld X auch im HTML Dokument vorhanden ist?

      Natürlich. Mit getElementsByName(), angewandt auf das Formular, bekommst du eine Liste (quasi ein Array) aller Elemente mit einem bestimmten Namen. Diese Liste hat eine length-Eigenschaft. Wenn dieser Wert 0 ist, gibt es im betrachteten Dokumentteil kein Element mit dem gewünschten Namen.

      Gruß, Tom

      1. @@Tom2748:

        nuqneH

        Die Alternative zu dieser Art der Pflichtfeldprüfung wäre eine umständliche Perl Programmierung.

        Nein. 1UP hat dir eine Alternative genannt.

        Qapla'

        PS. Zitieren bitte sinnvoll, nicht alles.

        --
        „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
      2. hi,

        Das ist unerheblich. Die Verarbeitung findet innerhalb eines CMS statt. Nur ein eingeschränkter Nutzerkreis mit vorgegebener Browsereinstellung bedient das Formular. Das endgültig statisch erstellte Dokument verwendet kein JS mehr. Die Alternative zu dieser Art der Pflichtfeldprüfung wäre eine umständliche Perl Programmierung.

        Nanana ;)

        Ist es möglich, den JS Check für INPUT Feld X nur durchzuführen, wenn INPUT Feld X auch im HTML Dokument vorhanden ist?

        Das ist selbstverständlich auch mit Perl möglich und alles andere als umständlich: Das ist Programmierer-Alltag. Verwende CGI.pm, da liefert Dir die param()-Funktion eine Liste mit Namen aller im Request vorhandenen Parameter und wenn INPUT Feld X einen Namen hat, wird der auch übermittelt.

        Schöne Grüße,
        Horst (Name geändert)

        1. Das ist selbstverständlich auch mit Perl möglich und alles andere als umständlich: Das ist Programmierer-Alltag. Verwende CGI.pm, da liefert Dir die param()-Funktion eine Liste mit Namen aller im Request vorhandenen Parameter und wenn INPUT Feld X einen Namen hat, wird der auch übermittelt.

          Danke für den Hinweis, in Perl steige ich gerade erst richtig ein.

  2. Meine Herren!

    Es wird ein HTML Formular Dokument mit INPUT Feldern erstellt.
    Beim Submit soll via JS geprüft werden, ob ein value vorhanden ist.

    Um Pflichtfelder auszuzeichnen gibt es das HTML-Attribut required. Beispiel:

    <input required>

    Das hat diverse Vorteile gegenüber einer JavaScript-Lösung, insbesondere was die Zugänglichkeit angeht: Assistierende Software, wie Screenreader, können dieses Attribut auswerten und dem Nutzer auf diese Weise mitteilen, was von ihm verlangt wird.

    Außerdem gibt es die CSS-Pseudoklassen :valid und :invalid, die es erlauben, gültige und ungültige Felder getrennt voneinander zu stylen.

    Falls es darüber hinaus trotzdem Bedarf an eigener clientseitiger Logik gibt, dann gibt es eine standardisierte JavaScript-API, die in Symbiose mit diesen Features arbeitet. Für ältere Browser gibt es Polyfills/Shims.

    --
    “All right, then, I'll go to hell.” – Huck Finn