Gast200: Javascript select Funktion, verschieben von Werten zwei Boxen

Hallo!! Hätte da eine kleine Frage bezüglich meiner Funktionen...die wie folgt funktionieren sollt:
a)die Erste function Eingabe:
Findet den gesuchten Wert im Selectbereich wieder(der sollte aber nicht nur auswahl sondern auch liste2 sein...habs versucht...es fruchtet jedoch leider nicht wirklich).
b)die zweite funcion do_submit:
-Sollte den Wert von auswahl in die Textbox liste2 verschieben
-sprich in der auswahl Textbox sollte der Wert dann nicht mehr vorhanden sein
-und hier befindet sich auch das eigentliche Problem! Wird der Wert eingegeben verschiebt sich der Text wie gewollt von a nach b...jedoch möchte ich nur einen Wert in Liste2 haben!! und zwar genau jenen der in select auswahl und select liste2 den Eingabewert am nähesten ist.

Hab schon einiges versucht aber ich komme leider nicht auf die richtige Lösung...wenn einer von euch weiter weiß wäre ich seeeehr sehr dankbar!!! Lg und danke für eure Posts schon mal im Voraus!!! ;)

Die Funktion lautet wie folgt:

<script type="text/javascript">

function Eingabe(wert) {
wert = wert.toLowerCase().replace(/[.*+?|()[]{}-]/gi,"").replace (/^\s+/, '').replace (/\s+$/, '').replace(/(\s)\s+/g,"$1");
if (wert.length == 0) {
var si = document.getElementById('auswahl').selectedIndex;
document.getElementById('auswahl').options[si].selected = false;
document.getElementById('Hilfsanzeige').innerHTML = '&nbsp;';
return;
}
var so = document.getElementById('auswahl').options;
var sol = so.length;
for (i = 0; i < sol; i++){
if (wert == so[i].innerHTML.toLowerCase().replace(/[.*+?|()[]{}-]/gi,"").replace (/^\s+/, '').replace (/\s+$/, '').replace(/(\s)\s+/g,"$1").match(wert)) {
so[i].selected = true;
document.getElementById('Hilfsanzeige').innerHTML = so[i].innerHTML;
break;
}
}
}

</script>

<script type="text/javascript">
function do_submit() {
  for (i=document.getElementById('auswahl').liste2.length; i >= 0 ; i--) {
    document.getElementById('auswahl').liste2.options[i].selected=true;
    }
  document.getElementById('auswahl').submit();
}

function moveItems(source, destination) {
    for (i=0; i < source.length; i++) {
        if (source.options[i].selected==true ) {
            destination.options[destination.length] = new Option(source.options[i].text, source.options[i].value);
        }
    }
    for (i=source.length-1; i >= 0 ; i--) {
        if (source.options[i].selected==true) {
            source.options[i] = null;
        }
    }
}
</script>

<div id="Hilfsanzeige">&nbsp;</div>
<input  id="suchwert" placeholder="Schnellsuche" onKeyUp="Eingabe(this.value);moveItems(document.getElementById('liste').auswahl, document.getElementById('liste').liste2)">
<br>
<form name="liste" id="liste" action="" method="post" multiple="multiple" size="4">
<select multiple="multiple" size="4" id="auswahl">
<option>Albert</option>
<option>Audi</option>
<option>Audit</option>
<option>Auditorium</option>
<option>Auditoriumhalle</option>
<option>Halbwertzeit</option>
<option>Haudegen</option>
<option>Rudi</option>
<option>Klagenfurt</option>
<option>Klagenfurt am Wörthersee</option>
<option>Rudi</option>
<option>Rudii</option>
</select>
<select multiple="multiple" name="liste2" id="liste2" size="4">
</select>
</form>

  1. Hi,

    was mir auffällt ...

    destination.options[destination.length]

    Nicht die destination, sondern die options haben die length.

    Besser also
    destination.options[destination.options.length]

    Grüße

    • Steffen

    PS
    Dein Schreib- und Codestyle machen es schwer Dein Posting zu lesen und zu verstehen.
    Keine Einrückungen, zu wenig Leerzeichen und -zeilen, ...

    1. Hallo,

      Dein Schreib- und Codestyle machen es schwer Dein Posting zu lesen und zu verstehen.
      Keine Einrückungen, zu wenig Leerzeichen und -zeilen, ...

      ja, und das gilt sowohl für den reinen Text, als auch für den Code.

      Ciao,
       Martin

      --
      Realität ist eine Illusion, die durch Unterversorgung des Körpers mit Alkohol entstehen kann.
      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      1. ...hier ein einfaches Bsp.:
        input: in die erste textbox = a
        output:
        textbox auswahl hat nun nicht mehr den Wert = Albert
        textbox liste2 hat nun den Wert = Albert

        Problem Bsp:
        input: in die erste textbox = a wird nun gelöscht und durch a ersetzt
        output:
        textbox auswahl hat nun nicht mehr den Wert = Audi
        textbox liste2 hat nun den Wert = Audi
        textbox liste2 hat nun noch immer den Wert = Albert(dieser sollte aber in auswahl stehen...tut es aber nicht...)

        Glg...hoffe das hilft ;)...u sorry aber weiß leider nicht wie ich es sonst formulieren sollte(code u den post)...