Dynamische Formularfelder

  • Dynamische Formularfelder

    Ich möchte eine Kundendatenbank aufbauchen und wollte das mit Javascript für den Benutzer komfortabler gestalten. Es soll einen Unterschied zwischen privat und geschäftlich geben. Je nach Typ sollen dann bestimmte Felder angezeigt werden. Habe das mal probiert, aber irgendwie funktioniert das nicht. Keine Reaktion, egal auf welchen Radio-Button ich drücke.

    Hier mal das Javascript in der Datei: pdata.js:

    Quellcode

    1. function private()
    2. {
    3. document.getElementById("firma").style="display:none";
    4. }
    5. function business()
    6. {
    7. document.getElementById("vorname").style.display="none";
    8. document.getElementById("name").style.display="inline";
    9. }
    Alles anzeigen


    Und hier der HTML-Code dazu:

    Quellcode

    1. <script src="pdata.js" > </script>
    2. <table>
    3. <tr>
    4. <td>
    5. <input name="kunden" value="privat" checked="checked" id="private" type="radio" onClick="private()"><label>Privatkunde</label>
    6. </td>
    7. <td>
    8. <input name="kunden" value="business" id="business" type="radio" onClick="business()"><label>Geschäftskunde</label>
    9. </td>
    10. </tr>
    11. <tr>
    12. <td abbr="Listenpunkt"><p>Firma</p></td>
    13. <td><input type="text" name="firma" id="firma" value="{firma}" /></td>
    14. </tr>
    15. <tr>
    16. <td abbr="Listenpunkt"><p>Vorname</p></td>
    17. <td><input type="text" name="vorname" id="vorname" value="{vorname}" /></td>
    18. </tr>
    19. <tr>
    20. <td abbr="Listenpunkt"><p>Name</p></td>
    21. <td><input type="text" name="name" id="name" value="{name}" /></td>
    22. </tr>
    23. </table>
    Alles anzeigen

    Je nach Option - privat oder geschäftlich - sollen nur die jeweils bestimmten Felder angezeigt werden. Durch Drücken einer der beiden Radio-Buttons sollte eigentlich die jeweilige Funktion aufgerufen werden.
  • "private" könnte ein Schlüsselwort sein. Wenn vielleicht auch nicht in JavaScript, dann aber in anderen Sprachen.
    Also besser erst gar nicht angewöhnen es als Namen zu verwenden.

    Ansonsten ist die Schreibeweise objekt.style.display = 'wert'; korrekt... private() ist also falsch.
    Außerdem solltest du dir Gedanken um das Wiedereinblenden machen,
  • Ich hab das jetzt mal geändert, aber leider auch ohne Erfolg. Es ändert sich nichts - egal auf welchem radiobutton ich drücke. Firefox sagt mir immer sad busisesskeine Function ist. Hier nochmal die geänderten Codes:

    Quellcode

    1. <script language="javascript" type="text/javascript">
    2. function nobusiness()
    3. {
    4. document.getElementById("firma").style.display = "none";
    5. document.getElementById("name").style.display = "inline";
    6. }
    7. function business()
    8. {
    9. document.getElementById("firma").style.display = "inline";
    10. document.getElementById("name").style.display = "none";
    11. }
    12. </script>
    13. <table>
    14. <tr>
    15. <td>
    16. <input name="kunden" value="nobusiness" checked="checked" id="nobusiness" type="radio" onClick="nobusiness()"><label>Privatkunde</label>
    17. </td>
    18. <td>
    19. <input name="kunden" value="business" id="business" type="radio" onClick="business()"><label>Geschäftskunde</label>
    20. </td>
    21. </tr>
    22. <tr>
    23. <td abbr="Listenpunkt"><p>Firma</p></td>
    24. <td><input type="text" name="firma" id="firma" value="{firma}" /></td>
    25. </tr>
    26. <tr>
    27. <td abbr="Listenpunkt"><p>Vorname</p></td>
    28. <td><input type="text" name="vorname" id="vorname" value="{vorname}" /></td>
    29. </tr>
    30. <tr>
    31. <td abbr="Listenpunkt"><p>Name</p></td>
    32. <td><input type="text" name="name" id="name" value="{name}" /></td>
    33. </tr>
    34. </table>
    Alles anzeigen