Nein, ist nicht der richtige Bereich. Das was Du willst, lässt sich nur mit JavaScript lösen. Hab ihn daher in den richtigen Bereich verschoben.
Und zwar müsstest Du an das input-Feld einen EventHandler wie onchange hängen der eine JavaScript-Funktion aufruft, welche wiederum die Filterung vornimmt. Im HTML sieht das z.B. so aus:
HTML:
<input type="text" name="eingabefeld" value="" onchange="setFilter(this);">
Die in meinem Beispiel genannte Funktion setFilter müsste dann sowohl den eingegebenen Wert prüfen als auch die Filterung in dem select-Feld vornehmen. Letzteres ist dann jedoch etwas komplexer. Der Grundaufbau der Funktion könnte z.B. so aussehen und müsste z.B. in eine externe JS-Datei eingefügt werden, die in das HTML-Dokument eingebaut wird.
Code:
function setFilter( obj ) {
if( obj && obj.value && obj.value.length > 0 )[
// Hier dann die Filterung einbauen
}
}
Theoretisch könnte man einfach alle nicht übereinstimmenden <option>-Element mit "display: none;" unsichtbar machen, das kapiert jedoch dummerweise der Internet Explorer nicht. Aus dem Grund könnte und sollte man hier folgendermaßen vorgehen:
Alle Einträge des select-Feldes in einem Array speichern.
Vor der Prüfung auf das Filterkriterium das select-Feld im DOM erzeugen, z.B. so:
Code:
var selectfeld = document.createElement("select");
selectfeld.name = "derFeldName";
selectfeld.multiple = "multiple";
selectfeld.size = "5";
Dann erst durch das Array (ich nenn es einfach mal "liste") gehen und wenn der Array-Eintrag als <option>-Feld eingefügt werden soll, dann dieses <option>-Elemnt im DOM erzeugen, z.B. so:
Code:
var optionfeld = document.createElement("option");
optionfeld.value = liste[i];
optionfeld.innerHTML = liste[i];
selectfeld.appendChild(optionfeld);
Zum Schluss dann das Original-Select-Feld entfernen (Stichwort removeChild()) und das neue Feld an dessen Stelle einfügen.
Ich weiß, klingt komplex, ist es auch - aber einfacher machen es die Browser einem leider nicht :(