northern_light: Radio-Button: Eingabe prüfen

Hallo,

ich möchte in einem Formular Eingabefelder (2 Textfelder und 1 Radio-Button) prüfen lassen, ob etwas eingetippt bzw. angeklickt wurde. Nur, wenn überall etwas drin steht, soll ein Email an mich gesendet werden und der User auf eine neue Seite weitergeleitet werden. Wenn nicht, sollen Fenster aufscheinen, die auf die Eingabe hinweisen.

Bei den Textfeldern hab ichs hinbekommen, aber der Radio-Button weigert sich hartnäckig.

Hier ist die testseite: http://www.pass-net.net/training/formular2.htm

Ich habe von Javascript keine Ahnung, alles, was soweit schon fuktioniert, hab ich aus diversen Foren. Nun stehe ich aber an und finde keine Lösung.

Ich wäre für Hilfe sehr dankbar!
lg
northern_light

  1. Auch wenn du von Javascript keine Ahnung hast:
    http://de.selfhtml.org/javascript/objekte/elements.htm#checked
    Hier steht die Lösung!
    Ich denke, dass das bereits soweit vereinfacht ist, das die Logik dich schon das richtige machen lässt. Ansonsten noch mal melden!
    Google hilft da echt. Stichwort: selfhtml radiobutton
    (der zweite Eintrag ist dann der Volltreffer!)

    Gruß

    Frank

    1. Danke, das war schon sehr hilfreich. Es funktioniert bei mir, solange ich nur den radio-button drin habe. sobald ich die textfelder hinzunehme, geht gar nix mehr. was mache ich falsch? *heul*

      es sieht jetzt so aus:

      <head>
      <script type="text/javascript">
      <!--
      function chkFormular()
      {
       if(document.Formular.name.value == "")  {
         alert("Please type in your name");
         document.Formular.name.focus();
         return false;
        }
       if(document.Formular.organisation.value == "") {
         alert("Please type in your Organisation");
         document.Formular.organisation.focus();
         return false;
        }
         {
        if (document.Formular.agree[0].checked == true) {
          window.location.href = "http://www.pass-net.net/training/index.htm";
        } else {
          alert("Bitte eine Auswahl treffen");
        }
      }
      //-->
      </script>
      </head>

      <body>

      <form name="Formular" action="/system-cgi/formmail.pl" method="post" onSubmit="return chkFormular()">
      <pre><p>
      <input type=hidden name="recipient" value="xxx@yyy.at">
      <input type="hidden" name="redirect" value="http://pass-net.net/training/">

      Name: <input type="text" name="name" size="40" maxlength="60" value="">
      Organisation: <input type="text" name="organisation" size="40" maxlength="60" value="">
      <input type="radio" name="agree" value="yes"> I agree ...

      <input type="submit" value="Submit and go to downloads" tabindex="3">
      </p>
      </pre>
      </form>
      </body>

      1. Hallo,

        Danke, das war schon sehr hilfreich. Es funktioniert bei mir, solange ich nur den radio-button drin habe. sobald ich die textfelder hinzunehme, geht gar nix mehr. was mache ich falsch? *heul*

        im Moment das Heulen. Das trübt nämlich den Blick. ;-)

        <script type="text/javascript">
        <!--

        Das Auskommentieren von Script-Blöcken mit einem HTML-Kommentar darfst du dir gern abgewöhnen. Die Browser, die das nötig hatten, kennen nur noch die Archäologen unter uns.

        if(document.Formular.organisation.value == "") {
           ...
          }
           {

        Oops. Du machst einfach so mittendrin einen neuen Block (geschweifte Klammer) auf? Das ist zwar nicht verboten, aber eigentlich unsinnig, und provoziert Folgefehler, weil man leicht vergisst, den zusätzlichen Block auch wieder zu schließen.

        if (document.Formular.agree[0].checked == true)

        "Ist es wahr, dass ... wahr ist?"
        Einen boolschen Wert nochmal mit true zu vergleichen, um wieder denselben Wert zu bekommen, ist nicht falsch, aber höchst unnötig. Außerdem macht es das Lesen schwerer. Warum nicht einfach so:

        if (document.Formular.agree[0].checked)

        So, jetzt kommen wir zum Problem:

        <form name="Formular" ...

        Diese Eigenschaft des Formular-Objekts kann über document.Formular.name angesprochen werden.

        <input type="text" name="name" ...

        Dieses Formularelement ist theoretisch auch als document.Formular.name ansprechbar.

        Du siehst den Konflikt? Vermeide es, Namen zu vergeben, die sich mit reservierten Wörtern oder bereits vorhandenen Eigenschaften in die Quere kommen könnten.

        So long,
         Martin

        --
        Die letzten Worte des Neandertalers:
        Möchte doch zu gern wissen, was in der Höhle ist ...
        1. Hallo Martin,

          danke für deine Bemühungen, mir die Funktionsweise von Java etwas näher zu bringen. Ich hab mein Formular in Eingabeformular umbenannt, um den Konflikt mit bereits reservierten Namen zu vermeiden.

          Mein Problem ist aber, dass ich gar nicht genau weiß, wann mit "Formular" der Name angesprochen ist, und wann ein reserviertes Wort dahinter steckt. Wie gesagt, ich hab leider keine Ahnung von Java und hab mir das alles aus div. Foren zusammenkopiert.

          Ich bastle jetzt schon seit Stunden herum und schaffs irgendwie nicht. Ich wäre sehr dankbar, wenn mir jemand einfach meinen Quelltext korrigieren könnte und ich kopiers rein. Bevor ich das ganze Ding aus dem Fenster werfe.

          Bitte bitte ... und sorry fürs lästig sein!

          lg
          northern_light

          1. Hoi!

            danke für deine Bemühungen, mir die Funktionsweise von Java etwas näher zu bringen. Ich hab mein Formular in Eingabeformular umbenannt, um den Konflikt mit bereits reservierten Namen zu vermeiden.

            Javascript. Nicht Java.

            Mein Problem ist aber, dass ich gar nicht genau weiß, wann mit "Formular" der Name angesprochen ist, und wann ein reserviertes Wort dahinter steckt. Wie gesagt, ich hab leider keine Ahnung von Java und hab mir das alles aus div. Foren zusammenkopiert.

            Das hast Du falsch verstanden. "Formular" ist ein deutsches Wort. Das ist recht eindeutig. "name" ist Dein Problem. Es gibt eine Eigenschaft "name": document.Formular.name ist "Formular".

            Ich bastle jetzt schon seit Stunden herum und schaffs irgendwie nicht. Ich wäre sehr dankbar, wenn mir jemand einfach meinen Quelltext korrigieren könnte und ich kopiers rein. Bevor ich das ganze Ding aus dem Fenster werfe.

            Quelltext geb ich Dir grad niht. Keine Lust und keine Zeit. Aber mit der info dort oben solltest Du weiterkommen. Ansonsten gibt es verschiedene andere Methoden auf ein Objekt zuzugreifen - ueber den Index z.B.

            --
            "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
                  - T. Pratchett
            1. Mahlzeit Steel,

              Ansonsten gibt es verschiedene andere Methoden auf ein Objekt zuzugreifen

              ... die auch alle in http://de.selfhtml.org/javascript/objekte/elements.htm@title=SELFHTML erläutert werden (für den OP).

              MfG,
              EKKi

              --
              sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  2. Ahh, bei dem Quelltext wird einem ja schlecht....

    wenn du eh schon ein Stylesheet hast dann schreib doch dort das ganze Design rein.

    MfG
    Simon