HTML Anfänger: Wenn User etwas wählt, weiteres Feld anzeigen

Guten Abend,

ich habe ein kleines (hoffentlich kein großes) Problem. Wenn ein User auf meiner Kontaktseite bei Anrede "Familie" wählt, sollte ein weiteres Feld erscheinen, klickt er wieder etwas anderes an bzw. macht überhaupt nichts, dann sollte dieses auch nicht erscheinen / wieder verschwinden.

Mein HTML für das Feld Anrede

  
<label for="anrede">Anrede</label>  
<select name="anrede" id="anrede">  
<option value="Familie">Familie</option>  
<option value="Herr" selected="selected">Herr</option>  
<option value="Frau">Frau</option>  
</select>  

Ein HTML Feld für z.B. Name habe ich so umgesetzt

  
<label for="name">Name: *</label>  
<input type="text" name="name" id="name" value="<?=(isset($_POST['name'])) ? $_POST['name'] :''?>">  

Schwer dieses umzusetzen was ich oben geschrieben habe? Vielleicht hat jemand das bereits fertig und könnte es mir zur Verfügung stellen.

  1. Hi,

    Ein HTML Feld für z.B. Name habe ich so umgesetzt

    <label for="name">Name: *</label>
    <input type="text" name="name" id="name" value="<?=(isset($_POST['name'])) ? $_POST['name'] :''?>">

    
    >   
    
    hey wo hast du das den her:  
    `<?=(isset($_POST['name'])) ? $_POST['name'] :''?>`{:.language-php}  
      
    Ist das eine kurzform von:  
    ~~~php
    <?php  
    	if ( isset($_POST['name'])) { echo $_POST['name']; }  
    ?>
    

    Schwer dieses umzusetzen was ich oben geschrieben habe? Vielleicht hat jemand das bereits fertig und könnte es mir zur Verfügung stellen.

    Mit Jquery eigentlich einfach
    Ausführlich geschrieben (keine Kurzform ;-)

    $("#anrede").change(function(){ // wenn sich was ändert  
    	var inhalt = $( "anrede" ).val(); // selected auslesen  
    	if ( inhalt == "Familie" ) {  
    		$("#feld").show(); // feld einblenden  
    	}else{  
    		$("#feld").hide(); // feld verstecken  
    	}  
    });
    

    Viele Grüße aus LA

    --
    ralphi
    1. @@ralphi:

      nuqneH

      hey wo hast du das den her:
      <?=(isset($_POST['name'])) ? $_POST['name'] :''?>

      Aus der Hölle. Auch an dich nochmal der Hinweis, dass htmlspecialchars() fehlt. (Im Folgenden ergänzt.)

      Alternative Syntax für Kontrollstrukturen

      Ist das eine kurzform von:
      if ( isset($_POST['name'])) { echo htmlspecialchars($_POST['name']); }

      Nicht ganz. Sonderm

      if (isset($_POST['name']))  
      {  
          echo htmlspecialchars($_POST['name']);  
      }  
      else  
      {  
          echo '';  
      }
      

      Qapla'

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

      Mit Jquery eigentlich einfach
      Ausführlich geschrieben (keine Kurzform ;-)

      $("#anrede").change(function(){ // wenn sich was ändert

      var inhalt = $( "anrede" ).val(); // selected auslesen
      if ( inhalt == "Familie" ) {
      $("#feld").show(); // feld einblenden
      }else{
      $("#feld").hide(); // feld verstecken
      }
      });

        
      Danke für deinen Code. Hab diesen eingebaut aber bringt leider nicht dieses Ergebnis das ich erhofft habe.  
        
      Wenn ein User auf die Seite geht, sollte das Feld  
        
      ~~~html
        
      <div class="textfeld" id="familie">  
      <label for="familie">Familie</label>  
      <input type="text" name="familie" id="familie" value="<?=(isset($_POST['familie'])) ? htmlspecialchars($_POST['familie']) :''?>">  
      </div>  
      
      

      ausgeblendet sein, dieses habe ich mit

        
      #familie {  
      	display:none;  
      }  
      
      

      gemacht. Nun ist es auch weg. Wenn ich jetzt deinen jQuery Code benutzt, passiert leider nichts. Aber egal. ich lass es einfach so wie es jetzt ist. Stört ja nicht weiter, es werden einfach alle Felder angezeigt.

      1. Hallo

        Wenn ein User auf die Seite geht, sollte das Feld

        <div class="textfeld" id="familie">
        <label for="familie">Familie</label>
        <input type="text" name="familie" id="familie" value="<?=(isset($_POST['familie'])) ? htmlspecialchars($_POST['familie']) :''?>">
        </div>

        
        >   
        > ausgeblendet sein, dieses habe ich mit  
        >   
        > ~~~css
          
        
        > #familie {  
        > 	display:none;  
        > }  
        > 
        
        

        gemacht. Nun ist es auch weg. Wenn ich jetzt deinen jQuery Code benutzt, passiert leider nichts.

        Tja, das liegt wahrscheinlich wortwörtlich daran, dass er das Element mit der ID „familie“ nicht identifizieren kann. Eine ID muss dokumentweit eindeutig sein. Das ist sie bei dir aber nicht, weil du die ID (im hier gezeigten HTML-Schnipsel) zweimal verwendest.

        Tschö, Auge

        --
        Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
        Terry Pratchett, "Wachen! Wachen!"
        ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
        Veranstaltungsdatenbank Vdb 0.3
  2. Om nah hoo pez nyeetz, HTML Anfänger!

    Wenn ein User auf meiner Kontaktseite bei Anrede "Familie" wählt, sollte ein weiteres Feld erscheinen, klickt er wieder etwas anderes an bzw. macht überhaupt nichts, dann sollte dieses auch nicht erscheinen / wieder verschwinden.

    value="<?=(isset($_POST['name'])) ? $_POST['name'] :''?>">

      
    PHP ist da nicht die richtige Wahl, warum willst du warten, bis das Formular zum Server geschickt wurde?  
      
    Rodney Rehm hat einen [passenden Artikel](http://wiki.selfhtml.org/wiki/JavaScript/Verkettete_Auswahllisten) geschrieben.  
      
    Erst zur endgültigen Validierung des Formulars brauchst du PHp einzusetzen.  
      
      
    Matthias
    
    -- 
    Der Unterschied zwischen Java und JavaScript ist größer als der zwischen [Ziege und Ziegelstein](http://selfhtml.apsel-mv.de/java-javascript/index.php?buchstabe=Z#ziege).  
    ![](http://www.billiger-im-urlaub.de/kreis_sw.gif)
    
  3. @@HTML Anfänger:

    nuqneH

    Ein HTML Feld für z.B. Name habe ich so umgesetzt

    <label for="name">Name: *</label>
    <input type="text" name="name" id="name" value="<?=(isset($_POST['name'])) ? $_POST['name'] :''?>">

      
    Und das ist grundsätzlich falsch!  
      
    Du darfst NIEMALS Nutzereingaben unbehandelt in HTML ausgeben, sonst reißt du [Sicherheitslöcher](http://de.wikipedia.org/wiki/Cross-Site-Scripting) auf groß wie Scheunentore. Immer den [Kontextwechsel](http://wiki.selfhtml.org/wiki/PHP/Anwendung_und_Praxis/Kontextwechsel/erkennen_und_behandeln) beachten:  
      
    `<input type="text" name="name" id="name" value="<?=[code lang=php](isset($_POST['name'])) ? [link:http://php.net/manual/de/function.htmlspecialchars.php@title=htmlspecialchars]($_POST['name']) :''`{:.language-html}?>">[/code]  
      
    Qapla'
    
    -- 
    „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
    
    1. Tach!

      Du darfst NIEMALS Nutzereingaben unbehandelt in HTML ausgeben, sonst reißt du Sicherheitslöcher auf groß wie Scheunentore.

      Die reißt man sich auch, wenn man Daten unbehandelt verwendet, die keine Nutzereingaben sind. Ob sie in grauer Vorzeit Nutzereingaben waren oder aus anderen Quellen stammen, spielt dabei keine Rolle. Das sollte man auch nicht beachten müssen. Zu komplex werden die Bearbeitungsschritte, als dass es noch sinnvoll ist, bei der Ausgabe für jedes Bit dessen Herkunft zu kennen. Ankommende Daten sollten lediglich inhaltlich überprüft werden und gegebenenfalls in ihre Rohform überführt werden, also zum Beispiel von Maskierungszeichen bereinigt werden, wenn sie für irgendwelche Transportmechanismen damit bestückt waren.

      Immer den Kontextwechsel beachten:

      Eben, _immer_, nicht nur bei bestimmten Daten. Die Einführung des Artikels kann man ruhig auch lesen, also: Kontextwechsel.

      dedlfix.