Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Eingabefelder dynamisch ein- und ausblenden

Empfohlene Antworten

Veröffentlicht

Hallo,

ich möchte auf meiner Seite einem Formular dynamisch weitere Eingabefelder hinzufügen oder entfernen können. Ich habe dazu auch schon einen passenden Code gefunden und eingebunden, nur funktioniert daran etwas nicht.

Mein Code, zuerst das JavaScript:


  <script type="text/Javascript">

    var counter = 0;


    function moreFields() {

    	counter++;

    	var newFields = document.getElementById('teilnehmer').cloneNode(true);

    	newFields.id = '';

    	newFields.style.display = 'block';

    	var newField = newFields.childNodes;

    	for (var i=0;i<newField.length;i++) {

    		var theName = newField[i].name

    		if (theName)

    			newField[i].name = theName + counter;

    	}

    	var insertHere = document.getElementById('add');

    	insertHere.parentNode.insertBefore(newFields,insertHere);

    }


    function removeField(click_node)

    {

      click_node.parentNode.removeChild(click_node);

    }


  </script>

Und nun der HTML-Teil:

          <span id="teilnehmer" style="display: none;">

            <table cellspacing="0" style="width:100%;">

            <tr>

              <td>Vor-/Nachname</td>

              <td><input type="text" name="name[]" value="" style="width: 225px;" /></td>

            </tr>

            <tr>

              <td>E-Mail-Adresse</td>

              <td><input type="text" name="email[]" value="" style="width: 225px;" /></td>

            </tr>

            <tr>

              <td colspan="2">

                <input type="button" value="Teilnehmer entfernen" onclick="removeField(this.parentNode.parentNode.parentNode);" />

              </td>

            </tr>

            </table>

          </span>

          <form>

          <span id="add"></span>

          <a href="javascript:moreFields();">weitere Teilnehmer hinzufügen</a>

          </form>


Live kann ich das Formular nicht zeigen, da es sich um eine Intranet-Seite handelt, aber die Funktionsweise ist hier zu sehen. Soweit funktioniert der Code. Aus Design-Gründen soll jedoch kein Button zum Hinzufügen weiterer Felder angezeigt werden, sondern ein Link. Folgendes funktioniert auch:

<a href="javascript:///" onClick="removeField(this.parentNode.parentNode.parentNode);">Teilnehmer entfernen</a>

Da jedoch LotusNotes mit einem ziemlich alten IE 6 zum Einsatz kommt, funktioniert diese Version auch nicht, da Notes nichts mit dieser Link-Schreibweise anzufangen weiß. Also folgende Variante:

<a href="javascript:removeField(this.parentNode.parentNode.parentNode);">Teilnehmer entfernen</a>

Und hier hakt es nun. Ich weiß zwar, was hakt: parentNode besitzt keine Properties, denn this wird als DocumentWindow angezeigt.

Nur verstehe ich nicht, wieso das hakt, und wie man dieses Problem lösen kann.

Wenn es doch "nur" um den Link geht, versuch doch mal

<a href="#" onClick="removeField(this.parentNode.parentNode.parentNode);">Teilnehmer entfernen</a>

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.