Hallo,
ich hab da mal vor einiger Zeit ein tolles Javascript gefunden das es mir erlaubt in einer DropDown Box auch noch eine eigene Angabe zu machen.
Das Script geht auch aber nur immer mit der ersten DropDown Box. Ich selber hab keine Ahnung von Javascript und würd mich freuen wenn mir jemand kurz erklären könnte wie das funktioniert oder fast noch besser wie ich das Script hier verändern muss, dass ich es auf einzelene DropDown Boxen anwenden kann.
Am liebsten würde ich es extern in einer .js Datei lasen und nur einbinden und dann den gewünschten DropDowns diese Funktion verpassen wie eine Klasse oder ID.
Geht das? Wenn nicht dann wenigstens so das alle DropDown Boxen das Script nutzen.
Hier das script:
window.onload = function() {
var other = new Option('Anderes …');
var s = document.getElementsByTagName('select')[0];
s.options[s.options.length] = other; // Eintrag „Anderes …“ hinzufügen
s.onchange = function() { // Aktion bei Änderung der Auswahl
if (this.selectedIndex == (s.options.length - 1)) { // Bei Auswahl des letzte Elementes
var i = document.createElement('input'); // Eingabefeld erstellen
i.value = i.defaultValue = 'Anderes …'; // Wert und Standardwert festlegen
i.onblur = function() { // Aktion beim Verlassen des Eingabefeldes
if (i.value != i.defaultValue) { // Sollte ein neuer Wert eingegeben worden sein …
--s.options.length; // Eintrag „Anderes …“ entfernen
s.options[s.options.length] = new Option(i.value, i.value); // Neuen Wert hinzufügen
s.options[s.options.length] = other; // Eintrag „Anderes …“ wieder hinzufügen
/* Auswahl auf das soeben eingefügte Element setzen */
s.selectedIndex = (s.options.length - 2);
} else {
/* Auswahl auf das erste Element setzen, da onchange bei
erneuter Auswahl von „Anderes …“ sonst nicht aktiv wird */
s.selectedIndex = 0;
}
s.style.display = ''; // Auswahlfeld wieder einblenden
i.parentNode.removeChild(i); // Eingabefeld wieder entfernen
};
this.parentNode.insertBefore(i, this); // Eingabefeld vor Auswahlfeld einfügen
this.style.display = 'none'; // Auswahlfeld ausblenden
i.focus(); // Eingabefeld fokussieren
i.select(); // Inhalt auswählen
}
};
};