Raucherkrebs: Formular erweitern

Guten Tag Forum,

ich möchte, dass wenn jeman in ein Feld klickt darunter 2 radiobuttons erscheinen, in denen er dann etwas zu diesem Feld spezifizieren kann.

Wie geht das?

  1. hi,

    ich möchte, dass wenn jeman in ein Feld klickt darunter 2 radiobuttons erscheinen, in denen er dann etwas zu diesem Feld spezifizieren kann.

    Wie geht das?

    du kannst entweder zwei bereits von vornherein im dokument vorhandene buttons einblenden (CSS-eigenschaft display oder visibility dynamisch per style-objekt verändern), oder du kannst sie neu erzeugen, in dem du dich der DOM-methoden createElement, appendChild etc. bedienst.

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
    1. Hallo,

      momentan ist es so, und es klappt auch.
      Allerdings wird für das versteckte Element Platz reserviert. Das ist nich so gut. So gibt es unter dem Eingabefeld eine Lücke:

      JAVASCRIPT

      function showID1() {
          if(document.getElementById) {
              document.getElementById("id1").style.visibility = "visible";
          }
      }

      HTML<tr><td>Berufsausbildung zum:</td></tr>
      <tr><td><input type="text" name="workEducation" size="40" onfocus="showID1()" /></td></tr>
      <tr><td>
      <div id="id1" style="visibility: hidden;">
      <input type="radio" name="workEducationCompleted"  value="ja" checked="checked" />mit Abschluß
      <input type="radio" name="workEducationCompleted"  value="nein" />ohne Abschluß
      </div>
      </td></tr>

      1. hi,

        Allerdings wird für das versteckte Element Platz reserviert.

        ja, so soll visibility ja auch wirken - works as designed.

        aber ich empfahl dir ja alternativ noch eine weitere CSS-eigenschaft - und die macht vermutlich das, was du willst.

        (btw: wenn ich dir die beiden als stichwort nenne, gehe ich eigentlich davon aus, dass du bzgl. deren unterschiede mal in self nachschlägst ...)

        gruß,
        wahsaga

        --
        "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
  2. Hallo,

    ich möchte, dass wenn jeman in ein Feld klickt darunter 2 radiobuttons erscheinen, in denen er dann etwas zu diesem Feld spezifizieren kann.

    Wie geht das?

    Weise dem Feld im onClick-Eventhandler ein kleines JavaScript zu, dass die CSS-Eigenschaft display der Radiobuttons auf einen anderen Wert als  none setzt.

    Wenn der Nutzer JavaScript deaktiviert hat, wird dies allerdings nicht funktionieren. Besser wäre es, die Radiobuttons immer anzuzeigen und die Eingaben des Nutzers serverseitig auf Plausibilität zu prüfen.

    Gruß aus Bonn
    Sven

    --
    Do it yourSELF 'cause SELFmade is bestmade.
    Selfcode: ie:% fl:( br:^ va:} ls:[ fo:) rl:( n4:{ ss:| de:> js:| ch:? mo:} zu:)
    Selfcode dekodieren - Selfcode-Info
    1. Wenn der Nutzer JavaScript deaktiviert hat, wird dies allerdings nicht funktionieren. Besser wäre es, die Radiobuttons immer anzuzeigen und die Eingaben des Nutzers serverseitig auf Plausibilität zu prüfen.

      Das ist natürlich klar. Die Formulare werden grundsätzlich serverseitig überprüft. JAvascript ist nur ein Bonus.

    2. Hallo zusammen

      Weise dem Feld im onClick-Eventhandler ein kleines JavaScript zu, dass die CSS-Eigenschaft display der Radiobuttons auf einen anderen Wert als  none setzt.

      (oder visibility:hidden/visible, falls kein Platz reserviert werden soll)

      Wenn der Nutzer JavaScript deaktiviert hat, wird dies allerdings nicht funktionieren. Besser wäre es, die Radiobuttons immer anzuzeigen und die Eingaben des Nutzers serverseitig auf Plausibilität zu prüfen.

      Ich würde da empfehlen, die Radiobuttons ganz normal ins html einfügen und auch ohne sie auszublenden. Und erst bei onLoad o.ä. mit Javascript display bzw. visibility auf none/hidden setzen. So bist Du sicher, dass sie wieder gezeigt werden, wenn sie mit onClick sichtbar gemacht werden.
      Ohne JS werden sie einfach immer angezeigt. (Javascript soll ja einfach dazu da sein, die Verwendung des Formulars zu vereinfachen, aber nicht 'im Weg' stehen)

      Gruss
      Louis

      1. hi,

        Weise dem Feld im onClick-Eventhandler ein kleines JavaScript zu, dass die CSS-Eigenschaft display der Radiobuttons auf einen anderen Wert als  none setzt.
        (oder visibility:hidden/visible, falls kein Platz reserviert werden soll)

        nö, genau andersherum - display:none = ausblenden ohne, visibility:hidden = ausblenden mit platzhalter.

        gruß,
        wahsaga

        --
        "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
        1. hallo

          nö, genau andersherum - display:none = ausblenden ohne, visibility:hidden = ausblenden mit platzhalter.

          öh, ja tatsächlich. Ich musste mein Satz nochmals 5mal lesen, bis ich begriffen habe, ja natürlich selbstverständlich andersrum...

          Gruss
          Louis

          1. Danke! Hier das Ergebnis, allerdings kein erfolgreiches:

            function hide(id) {
                if(document.getElementById) {
                    document.getElementById(id).style.display = "none";
                }
            }

            function show(id) {
                if(document.getElementById) {
                    document.getElementById(id).style.display = "block";
                }
            }

            <body onload="hide(wec);">

            <tr><td><input type="text" name="workEducation" size="40" onfocus="show(wec)" /></td></tr>
            <tr><td>
            <div id="wec" style="display: block;">
            <input type="radio" name="workEducationCompleted"  value="ja" checked="checked" />mit Abschluß
            <input type="radio" name="workEducationCompleted"  value="nein" />ohne Abschluß
            </div>
            </td></tr>

            Bei Laden der Seite wird das zu versteckende Element angezeigt.
            Sieht jemand den Fehler?

            1. Hallo

              <body onload="hide(wec);">

              <tr><td><input type="text" name="workEducation" size="40" onfocus="show(wec)" /></td></tr>
              <tr><td>
              <div id="wec" style="display: block;">

              ------------------- ^^^^^^^^^^^^^^^^^^^^ mal weglassen

              <input type="radio" name="workEducationCompleted"  value="ja" checked="checked" />mit Abschluß
              <input type="radio" name="workEducationCompleted"  value="nein" />ohne Abschluß
              </div>
              </td></tr>

              Lass mal das display:block weg, denn das ist ja der Standard und deshalb nicht noetig. Es kann sein, dass hier wieder die Eigenschaft, welche beim onLoad gesetzt wurde, wieder ueberschrieben wird.

              Gruss
              Louis

            2. Hi,

              <body onload="hide(wec);">

              Du übergibst hier einen undefinierten Wert, was Dir eigentlich sogar der IE gesagt haben müßte.

              freundliche Grüße
              Ingo