Optionen im Select dynamisch löschen

TrooperA

Grünschnabel
Moin, Moin,

Folgendes Problem stell sich mir:

Aus einer MySQL-Datenbank wird ein Select gefüllt:
> Datenbankabfrage
> In einer Schleife werden die options gefüllt
for($db_id=0; $db_id<count($db_name); $db_id++){
$selectopt="<option value="$db_id">$db_name[$db_id]</option>";
}
Danach kommt ein Formular das 16 Zeilen mit je 5 Eingabefeldern und diesem Select hat.
<form id=Test name=Test>
<table>
for($zeile=0; $zeile<16; $zeile++){
<tr><td><input feld[]></td>
<td>...</td>
<td><select name=DerName[$zeile] id=DerName[$zeile] size=1>$selectopt</select></td>
}
<table>
Soweit so gut. Nun soll aber der Name der in Zeile X ausgewählt wurde in den restlichen Selects verschwinden.

Geht das überhaupt?
Leider habe ich jetzt mehrere Tage vergeblich gesucht, oder ich bin zu doof um die gefundenen Lösungen, wie zB http://www.tutorials.de/tutorials131191.html umzusetzen.

Danke im Voraus, Frohe Weihnachten und einen Guten Rutsch,

Joggi (AKA: TrooperA)
 
Jo... das geht.
Nen Beispiel....in deinen <select>'s musst du das Skript mit
Code:
onchange="kickOptions(this,this.form)"
aufrufen.
Das Skript selbst:
Code:
<script type="text/javascript">
<!--
function kickOptions(s,f)
{
toKick=s.options[s.selectedIndex].value;
for(e=0;e<f.elements.length;++e)
  {
  if(	f.elements[e].type.indexOf('select')>-1&&
  	f.elements[e].name.indexOf('derName')>-1&&
  	f.elements[e]!=s)
    {
         for(o=0;o<f.elements[e].options.length;++o)
        {
        if(f.elements[e].options[o].value==toKick)
          {
          f.elements[e].options[o]=null;
}}}}}
//-->
</script>
es speichert eingehend erstmal den ausgewählten Wert.
Dann geht es alle Formularelemente durch und prüft, ob sie 1.ein <select> sind und 2.in ihrem Namen die Zeichenkette "derName" und 3.nicht das auslösende Element ist.
Ist dies der Fall, dann werden alle Optionen des <select>'s durchgegangen. Stimmt der value einer<option> mit dem eingangs gespeicherten überein, wird sie gelöscht.
Falls du noch willst, dass zum Schluss im Zweifelsfall nicht nur noch 2 Namen übrigbleiben, musst du verhindern, dass innerhalb eines <select>s mehrmals ausgewählt wird. Dann füge an den Anfang der Funktion noch die Zeile
Code:
s.disabled=true;
ein.
Frohe Weihnachten... möge der Glühwein in Strömen fliessen!
 

Anhänge

  • santa.gif
    santa.gif
    1 KB · Aufrufe: 140

Neue Beiträge

Zurück