Javascript + Formular

Alienqueen

Vice Admiral Special
Mitglied seit
11.11.2001
Beiträge
986
Renomée
1
Hallo,

ich habe zwei Select-Boxen.
In der ersten stehen Lieferanten:
<option value="10001100">Supplier1</option>
<option value="10001134">Supplier2</option>

usw.

Auf Knopfdruck möchte ich den ausgewählten Lieferanten dieser Box als neues Item in eine andere select-Box eintragen.

Hier ist dazu meine Funktion:

Code:
	function addu()
	{
		if(document.wahl.inright.selectedIndex >= 0)
		{
			check = 0;
			if (document.wahl.outright.length >= 1)
			{
				for (var i = 0; i <= document.wahl.outright.length-1; i++)
				{
					wert1 = document.wahl.outright[i].value;
					wert2 = document.wahl.inright.value;
					if(wert1 == wert2)
					{
						check = 1;
					}
				}
			}
			if (check == 0)
			{
				NeuerEintrag = new Option(document.wahl.inright.value, document.wahl.inright.value, false, true);
				document.wahl.outright.options[document.wahl.outright.length] = NeuerEintrag;
				document.wahl.outright.value = document.wahl.inright.value;
			}
		}
	}

Das funktioniert soweit auch. Allerdings möchte ich nicht nur den Value in die neue Box eintragen, sondern beides.
Momentant wird verständlicherweise z.B. "10001100" genommen.
Meine Funktion checkt noch, ob es den Eintrag in der anderen Box schon gibt.

A.
 
Zuletzt bearbeitet:
Hab ich schon drin:
NeuerEintrag = new Option(document.wahl.inright.value, document.wahl.inright.value, false, true);

Aber ich weiß nicht genau, wie ich den angezeigten Namen anspreche.

Irgendwas mit "document.wahl.inright.angezeigter_name".

A.
.
EDIT :
.

Habs jetzt anders gelöst. Gebe ID und Namen bei der Auswahl mit und splitte den Wert dann einfach.

Code:
				var inhalt = document.wahl.inuser.value
				var teile = inhalt.split("#")
				
				NeuerEintrag = new Option(teile[1], teile[0], false, true);

Falls es anders auch geht, bin ich trotzdem an einer Lösung interessiert.

A.
 
Zuletzt bearbeitet:
Habs jetzt anders gelöst. Gebe ID und Namen bei der Auswahl mit und splitte den Wert dann einfach.

Code:
				var inhalt = document.wahl.inuser.value
				var teile = inhalt.split("#")
				NeuerEintrag = new Option(teile[1], teile[0], false, true);
Falls es anders auch geht, bin ich trotzdem an einer Lösung interessiert.
Was kommt raus, wenn du inhalt einfach mal per alert ausgibst? Da müsste eigentlich nur "10001100" rauskommen... ???
 
Nee, ich habe natürlich die options auch umgebaut :)

<option value="10001100#Supplier1">Supplier1</option>
<option value="10001134#Supplier2">Supplier2</option>

A.
 
Nee, ich habe natürlich die options auch umgebaut :)

<option value="10001100#Supplier1">Supplier1</option>
<option value="10001134#Supplier2">Supplier2</option>

A.
Ahso. Kannst mal schnell den HTML Teil (form + select boxen) posten?
 
Klar, hier. Ist eine ASP-Seite und select Box wird aus einer DB befüllt.

Code:
...
<tr>
	<td><select name="inuser" size=10 style="width:220pt">
		<%do while not rs_u.EOF%>
			<option value="<%=(rs_u("zbuy") & "#" & rs_u("suppliername"))%>"><%=(rs_u("suppliername"))%></option>
		<%rs_u.MoveNext
		Loop%>
	</select></td>
	<td><input type="button" name="adduser" value=" >> " onClick="addu()"><br><input type="button" name="remuser" value=" << " onClick="remu()"></td>
	<td><select name="outuser" size=10 style="width:220pt">
		<%do while not rs_m.EOF%>
			<option value="<%=(rs_m("zbuy"))%>"><%=(rs_m("suppliername"))%></option>
		<%rs_m.MoveNext
		Loop%>
	</select></td>
</tr>

...
 
Klar, hier. Ist eine ASP-Seite und select Box wird aus einer DB befüllt.
Brrrrrr, ASP... ;-)

Also ich würde die alten Interfaces nicht mehr nutzen und nur noch alles per DOM machen. Deshalb hier eine Möglichkeit:
Code:
//erstmal Instanzen der Select Boxen besorgen
var inuserBox=document.getElementsByName("inuser");
var outuserBox=document.getElementsByName("outuser");

//Werte holen, die später gebraucht werden
var currentValue=inuserBox.value;
var textOfCurrentValue=inuserBox.options[inuserBox.selectedIndex].text; // <-- Ja, das ist nicht wirklich DOM

//neue Option generieren
var newOption=document.createElement("option");
newOption.setAttribute("value",currentValue);
var textOfNewOption=document.createTextNode(textOfCurrentValue);
newOption.appendChild(textOfNewOption);
newOption.setAttribute("selected","selected");

//Options Objekt an zweite Select Box anfügen
outuserBox.appendChild(newOption);

Ciao
Phil
 
Moin

So greifst Du unter anderem auf value und text zu

alert(document.wahl.inuser.value);
alert(document.wahl.inuser.options[document.wahl.inuser.selectedIndex].text);

Greez

Kali

P.S.: Tipp: und das nächste mal den HTML-Code und nicht den asp Code posten ;-)
 
Zuletzt bearbeitet:
Zurück
Oben Unten