Ankündigung

Einklappen
Keine Ankündigung bisher.

Radiobuttons

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Radiobuttons

    Hallo zusammen!

    Ich hab ein Formular mit Radiobuttons.
    Bei den Radiobuttons kann man das Geschlecht wählen (m oder w).
    Im Feld Darunter kann man die gewünschte Anrede reinschreiben (Herr, Frau,...).

    Jetzt möchte ich, dass wenn man bei dem Radiobutton m wählt, automatisch im Feld Anrede Herr reingeschrieben wird (als Vorschlag, wenn's dem User nicht passt kann er's ja noch ändern) und bei w logischerweise Frau.

    Ich werd das wohl mit Javascript machen müssen, da das Formular da noch nicht abgeschickt werden soll.

    Ich hab schon mal eine Funktion geschrieben:
    Code:
    function anrede()
    {
    	var check = document.FORMULAR.GESCHLECHT.value;
    	if(check == "m")
    	{
    		document.FORMULAR.TITEL1.value = Herr;
    	}
    	else if(check == "w")
    	{
    		document.FORMULAR.TITEL1.value = Frau;
    	}
    }
    und im Formular das hier:
    Code:
    onChange="anrede()"
    Aber leider funktioniert das noch nicht...

    Ich vermute mal, das das value in der Funktion falsch ist, da das Eine ja fix auf m und das Zweite fix auf w steht, es gehört hier wahrscheinlich irgendwas mit check hin, oder?
    Die große Frage ist aber: Was gehört hier hin?
    Ob onChange stimmt weiß ich auch nicht sogenau, bei normalen Feldern schon, aber bei Radiobuttons?

    Vielen Dank im Vorraus für jede Antwort!

  • #2
    Code:
    <form>
    <input type="radio" name="gender" onchange="this.form.title1.value='diese'" />
    <input type="radio" name="gender" onchange="this.form.title1.value='jenes'" />
    <input type="text" name="title1" value="" />
    </form>

    und bitte die eventhandler kleinscheiben ( validität )
    onChange = onchange

    Kommentar


    • #3
      DANKE!

      Jetzt hab ich aber noch eine Frage zu dem Thema:

      Ich speichere die eingegebenen Werte in einer Session. Später ruf ich das Formular noch mal auf und füll es mit den Daten der Session.

      Jetzt hab ich da noch eine Frage bezüglich Radiobuttons:

      Wie krieg ich das in die Session, was "checked" ist?

      Kommentar


      • #4
        dem radio button ein value geben value="m"

        Code:
        $m_checked='m'==$_SESSION['gender'] ?  'checked="checked"' : false;
        $w_checked='w'==$_SESSION['gender'] ?  'checked="checked"' : false;
        
        <form>
        <input type="radio" name="gender" value="m" onchange="this.form.title1.value='diese'" <?php echo $m_checked; ?> />
        <input type="radio" name="gender" value="w" onchange="this.form.title1.value='jenes'" <?php echo $w_checked; ?>  />
        <input type="text" name="title1" value="" />
        </form>

        Kommentar


        • #5
          Hab's schon!

          PHP-Code:
          <?
          if($_SESSION['GESCHLECHT'] == "m")
          {
              $m_check = "checked";
          }
          else if($_SESSION['GESCHLECHT'] == "w")
          {
              $w_check = "checked";
          }
          ?>
          [code]
          <?=$m_check?>="checked"
          <?=$w_check?>="checked"
          [code]

          Danke nochmal für die Hilfe!

          Kommentar


          • #6
            wenn m checked ...

            steht im w radio <..... ="checked" />

            wenn das mal kein fehler gibt

            besser wäre
            if($_SESSION['GESCHLECHT'] == "m")
            {
            $m_check = 'checked="checked"';
            }
            else if($_SESSION['GESCHLECHT'] == "w")
            {
            $w_check ='checked="checked"';
            }


            [edit]
            mit dem ternär operator ( ? : ) hast du
            a) die if else ersetzt
            b) die variablendeclaration gemacht

            also wäre eventuell der schreibweise
            Code:
            $m_checked='m'==$_SESSION['gender'] ?  'checked="checked"' : false;
            $w_checked='w'==$_SESSION['gender'] ?  'checked="checked"' : false;
            den vorzug zu geben

            mfg

            Kommentar


            • #7
              Nein, gibt keinen Fehler.

              Wenn m checked dann steht im m radio checked="checked" und im w radio steht dann ""="checked".

              --> weil das checked das immer drin ist unter Anführungszeichen ist ("").

              Warum sollte das einen Fehler verursachen?
              Hab's bis jetzt nur in IE probiert (hab sonst keinen Browser auf dem PC hier).
              Kann das sein, dass das im Firefox oder ähnlichem falsch gemacht wird? Oder was meinst du mit Fehler?

              Kommentar


              • #8
                mit fehler meine ich meist validitäts probleme

                sauberer code nicht nur in php auch in html

                es wäre doch super wenn jeder der code schreibt ob in php oder html sich an gewisse regeln halten würde ??

                in c, java oder anderen würde der kompiler auf deinem desktop erscheinen und dir einen "vogel" zeigen aber in php oder html iss das ja alles nich so schlimm funtzt ja

                ...

                das meine ich mit sauberem code "fehler" vermeiden

                :wink:


                mfg

                Kommentar


                • #9
                  Das "this" im JS-Code ist nicht nötig, eigentlich sogar falsch. Das es bei "Seeker" trotzdem funktionuckelt und der/die Browser keinen Laufzeitfehler erzeugen wundert etwas.

                  So reicht's (und so ist's eigentlich richtig) :

                  Code:
                  onchange="form.title1.value='diese'"
                  oder

                  Code:
                  onchange="document.form.title1.value='diese'"
                  Bei der "validen" XHTML 1.0 Stric Notation eines Formulars muss innerhalb der "form"-Tags ein Block-Element (div, span, fieldset, ...) folgen, dass die eigentlichen Formularelemente umschliesst.
                  [URL="https://xlb-weblab.de/toolstool/"][B]ToolsTool[/B] - Online (SEO-)Tools im Browser gleichzeitig starten ...[/URL]

                  Kommentar


                  • #10
                    Hm, also wenn ich das jetzt richtig verstanden hab, dann würde meine Lösung zwar überall funktionieren, aber deine entspricht mehr den Regeln...
                    (der neue Operator war mir bisher noch nicht bekannt, werd mich bei Gelegenheit mal über den genauer informieren)

                    Deine Hat aber noch einen Vorteil:
                    Sie ist weniger Schreibaufwand :wink:
                    Aber du hast schon recht, bei meinem Code steht dann immer was halbfertiges drin wenn etwas nicht gewählt wurde, das einfach ignoriert wird.
                    Bei deinem steht entweder was drin oder nicht, keine halben Sachen. Ist besser stimmt!

                    Ich hab also meine if + ifelse jetzt ersetzt durch
                    PHP-Code:
                    <?
                    $m_checked ='m'== $_SESSION['gender'] ?  'checked="checked"' : false; 
                    $w_checked ='w'== $_SESSION['gender'] ?  'checked="checked"' : false;
                    ?>
                    und im Formular dann
                    Code:
                    <?=$m_check?>
                    <?=$w_check?>
                    Danke nochmal für den Hinweis!
                    Bin noch Anfänger und kann solche Tipps gut gebrauchen!

                    Kommentar


                    • #11
                      @XLB

                      Hat auch nicht funktioniert :wink:

                      Hab mir erlaubt das aber einfach so zu ändern:
                      Code:
                      onchange="document.FORMULAR.TITEL1.value='Herr'"

                      Kommentar


                      • #12
                        Ähh ...

                        Was ist "FORMULAR" ? Hat das "form"-Tag ein "name"-Attribut ?

                        Doch , die Schreibweise ...

                        Code:
                        onchange="form.NAME_DES_INPUT.value='XYZ'"
                        ... funktioniert sehr wohl : Link
                        [URL="https://xlb-weblab.de/toolstool/"][B]ToolsTool[/B] - Online (SEO-)Tools im Browser gleichzeitig starten ...[/URL]

                        Kommentar


                        • #13
                          Ja, diese schon, aber nicht mit this vorne.

                          Ja, es hat ein name-Attribut und heißt FORMULAR (nicht sehr einfallsreich, aber funktionell).

                          Kommentar


                          • #14
                            wow

                            Code:
                            Das "this" im JS-Code ist nicht nötig, eigentlich sogar falsch.
                            this ... ist eine object variable welche sich auf das aktuelle object bezieht
                            in diesem falle object form
                            ( js ... jede funktion ist ein object ... )
                            erkläre mir mal bitte was daran falsch ist " an this "

                            unter umständen einfach mal

                            http://www.webmatze.de/webdesign/jav...p_part_one.htm

                            lesen

                            Kommentar


                            • #15
                              Wollte doch meinen - war ein Missverständnis ...

                              Ein "valides" Formular-Tag hat ein id-Attribut, keinen "name" !!! Daher wäre, falls auf deiner Seite nur ein Formular existiert, die "einfache" generelle Schreibweise ...

                              Code:
                              onchange="document.form.TITEL1.value='Herr'"
                              ... vorzuziehen, ohne einen expliziten Formularnamen zu nennen. Ansonsten müsste man XHTML- und DOM-konform dem Formular eine ID verpassen und mittles getElementById() auf einzelne Elemente zugreifen.
                              [URL="https://xlb-weblab.de/toolstool/"][B]ToolsTool[/B] - Online (SEO-)Tools im Browser gleichzeitig starten ...[/URL]

                              Kommentar

                              Lädt...
                              X