Javascript select Funktion, verschieben von Werten zwei Boxen
Gast200
- javascript
0 Steffen0 Der Martin0 Gast200
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 = ' ';
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"> </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>
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
PS
Dein Schreib- und Codestyle machen es schwer Dein Posting zu lesen und zu verstehen.
Keine Einrückungen, zu wenig Leerzeichen und -zeilen, ...
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
...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)...