CodeNewbie2k11: Pflichtfelder ausfüllen-->Button aktiviert

Hi Community!

Ich habe folgendes Problem, dass es zu lösen gilt:

Ich Habe einen Formmelder, und darin einige Pflichtfelder. Wenn nun ein Pflichfeld verlorengeht, kommt man auf die Fehlerseite-->bisherige Eingaben gehen verloren.

Ich würde um diesem Vorzubeugen, gerne eine Abfrage einbauen, die den Absenden-Button erst aktiviert, wenn ALLE Pflichtfelder ausgefüllt sind.
(btw. ich würde gerne auch ein Dropdownmenü abfragen, ob der wert von "" auf was anderes geändert wurde!)

Kann mir hierbei etwas Helfen? Mit Selfhtml alleine konnte ich das hier leider nicht bewältigen, da ich so viele Dinge kombinieren muss, und dass schaff ich so nicht ;)

Vielen Dank für alle Hilfe im Voraus

MfG

  1. @@CodeNewbie2k11:

    nuqneH

    Ich würde um diesem Vorzubeugen, gerne eine Abfrage einbauen, die den Absenden-Button erst aktiviert, wenn ALLE Pflichtfelder ausgefüllt sind.

    Ich glaub, das kannst du dir sparen. Moderne Browser beherrschen das mit HTML5: @required (auch für 'select').

    Ob der Aufwand, das für alte Browser noch mittels JavaScript nachzubauen, noch lohnt, wage ich arg zu bezweifeln. Serverseitig müssen die Daten ja sowieso nochmal geprüft werden. Das Stichwort für die Suchmaschine deiner Wahl lautet dann: Affenformular.

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
  2. Om nah hoo pez nyeetz, CodeNewbie2k11!

    Für alte Browser:

    function check_form(f)
    {
      var zpe = new Array(); // zu prüfende Elemente
      var pflicht = "Bitte alle Pflichtfelder ausfüllen!\n";
      var zeichen = "Die Zeichen '<' und '>' sind nicht erlaubt.\n";
    		
      zpe[0] = Array(f.elements['absender_name'], true, '(Ihr Name)');  // Element, pflicht, zusätzlicher text
      zpe[1] = Array(f.elements['absender_mail'], false, '(Ihre E-Mail-Adresse)');
    
      ...
    				
      for (i=0; i < zpe.length; i++)
      {
        zpe[i][0].className = ''; // klassennamen ggf. zurücksetzen
        if ((zpe[i][1] == true) && (zpe[i][0].value == '')) // Pflichtfeld und nichts drin
        {
          alert(pflicht + zpe[i][2]);
          zpe[i][0].focus(); // Cursor ins Feld setzen
          zpe[i][0].className = 'fehlerhaft'; // Feld hervorheben, z.B. roter Rahmen drum
          return false; //Prüfung nicht bestanden
        }
        if (zpe[i][0].value.match(/<|>/g))
        {
           alert(zeichen + zpe[i][2]);
           zpe[i][0].focus();
           zpe[i][0].className = 'fehlerhaft';
           return false;
        }
      }
      return true;
    }
    

    Matthias

    --
    1/z ist kein Blatt Papier. http://www.billiger-im-urlaub.de/kreis_sw.gif
  3. [latex]Mae  govannen![/latex]

    Ich würde um diesem Vorzubeugen, gerne eine Abfrage einbauen, die den Absenden-Button erst aktiviert, wenn ALLE Pflichtfelder ausgefüllt sind.

    Ich stoße auf dieses Formular, fülle es komplett aus, kann es aber nicht abschicken, weil ich zufällig gerade ohne JS unterwegs bin. JS nachträglich aktivieren hilft nix, der Button bleibt deaktiviert. Neu laden der Seite würde alle Eingaben verwerfen.

    Schlußfolgerung: Da die Daten ohnehin serverseitig verifiziert werden müssen, entweder den Button nicht deaktivieren und bei Absenden mit fehlenden Pflichtfeldern das Formular erneut vorlegen oder aber den Button erst mit JS deaktivieren.

    Stur lächeln und winken, Männer!
    Kai

    --
    Dank Hixies Idiotenbande geschieht grade eben wieder ein Umdenken
    in Richtung "Mess up the Web".(suit)
    SelfHTML-Forum-Stylesheet
  4. Hi!

    bisherige Eingaben gehen verloren.

    Aendere doch einfach das. Die muessen ja da sein. Warum sie, nur weil etwas fehlt, nicht wieder ausgegeben werden ist mir eh schleierhaft.

    --
    Signaturen sind blöd!