Werte zwischen Listenfeldern kopieren

 
Beschreibung

Manchmal möchte man dem Benutzer Optionen zur Auswahl vorlegen, deren Anzahl zwar groß ist, die aber kaum erklärungsbedürftig sind, z.B. Fragen wie "In welchem Bundesland wohnen Sie ..."

Die folgenden Beispiele zeigen die Verwendung von mehrzeiligen Feldern vom Typ <SELECT SIZE=... NAME="...>

 
Syntax

WertUebertragen(Quelle, Ziel, Entfernen)

Quelle Listenfeld (Objekt). Dieses Listenfeld bietet die verschiedenen Optionen an, die von der Funktion WertUebertragen kopiert / verschoben / gelöscht werden
Ziel Listenfeld (Objekt) oder null. Dieses Listenfeld nimmt die verschiedenen Optionen entgegen, die von der Funktion WertUebertragen aus dem anderen Listenfeld entnommen werden.
Entfernen true oder false. Gibt an, ob die gewählte Option in Quelle geloscht werden soll.

AlleWerteLoeschen(Ziel)

Ziel Listenfeld (Objekt). Löscht alle Einträge aus einem Listenfeld
 
Anmerkungen
Die Funktion WertUebertragen() wird zweckmäßigerweise mit dem OnClick-Ereignis aber ohne das Schlüsselwort MULTIPLE (= mehrere Einträge auswählen) verwendet. Beim Klick auf einen Wert im Listenfeld wird dieser von der Funktion WertÜbertragen() bearbeitet. Die folgenden Beispiele zeigen die Anwendung.

Die Funktion AlleWerteLoeschen() wird am Besten mit dem ONCLICK-Ereignis eines Buttons verwendet.
 
Funktions-Demo

Die folgenden Formulare demonstrieren die Wirkung der Funktion.

Demo: Kopieren von Einträgen von einem Listenfeld in ein anderes
In welchen Ländern waren Sie schon ?

Demo: Verschieben von Einträgen zwischen zwei Listenfeldern
In welchen Ländern waren Sie schon ?
 
Code
  <SCRIPT LANGUAGE="JavaScript1.1" TYPE="text/javascript"><!--

    function WertUebertragen(Quelle, Ziel, Entfernen) {
      var WertVorhanden = false
      var ZielVorhanden = (typeof Ziel != "undefined") && (Ziel != null)
      if (!ZielVorhanden) { Entfernen = true }
      for (var Nr = 0; Nr < Quelle.length; Nr++) {
        var QuellOption = Quelle.options[Nr]
        if (QuellOption.selected) {
          if(ZielVorhanden) {
            // Prüft, ob der Wert schon im rechten Textfeld vorhanden ist
            for (var Pos = 0; Pos < Ziel.length;) {
              WertVorhanden = (Ziel.options[Pos++].text == QuellOption.text)
              if (WertVorhanden) { break }
            }
            // Falls der Wert nicht vorhanden ist, wird er an das rechte
            // Listenfeld angefügt
            if (!WertVorhanden) {
              Ziel.options[Ziel.length] = new Option(QuellOption.text, QuellOption.value)
            }
          }
          if (Entfernen) { Quelle.options[Nr] = null }
        }
      }
    }

    // Löscht alle Werte aus dem Textfeld
    function AlleWerteLoeschen(Ziel) {
      for (var Nr = Ziel.length; Nr > 0;)
        Ziel.options[--Nr] = null
    }

    // Beispiel: So liest man Werte aus einem Listenfeld
    function Auslesen(ListenFeld) {
      var AusgabeText = ""
      for (var Nr = 0; Nr < ListenFeld.length;)
        AusgabeText += ListenFeld.options[Nr++].text + "\n"
      alert (AusgabeText)
    }  // -->
  </SCRIPT>