webForumDet fria alternativet

SelectedIndex Kopiera från listbox >> listbox

10 svar · 450 visningar · startad av tostewe

tosteweMedlem sedan juni 200291 inlägg
#1

Jag har skapat ett script som kopierar från listbox A >> listbox B.

*Dubbelklickar du på ett värde i A så kopieras värdet till B
*Dubbelklickar du på ett värde i B så raderas värdet i B
*Om du gör en MULTVAL i B och väljer knappen radera så raderas ALLA som du valt.
*Om du gör ett MULTIVAL i A och väljerknappen kopiera så kopieras bara första valet (det med lägst index nummer).

Så hur stegar jag vidare ner i selectedIndex???

:q

JojoxxMedlem sedan juni 20004 308 inlägg
#2

selectedIndex är bara ett val, det som är aktivt (sist valt). Har du flera listelement valda loopar du genom listan och kollar listalternativet.selected Här har du ett exempel på hur det används.

tosteweMedlem sedan juni 200291 inlägg
#3

Jag hajjar inte exemplet!!!
Troligen lite för mycket medicin i kroppen (CITADON, mysiga grejjor). Kan du förklara dig lite närmare hur skall jag stega igeon om listan...

Skall jag kolla HELA listboxA och se om raden är checked ???

JojoxxMedlem sedan juni 20004 308 inlägg
#4

Så här:

<script type="text/javascript">
function moveSelected(from,to){
	for(var n=0;n<from.length;n++){
		if(from[n].selected){ to[to.length]=new Option(from[n].text,from[n].value); }
	}
	for(var n=from.length-1;n>=0;n--){
		if(from[n].selected){ from[n]=null; }
	}
}
</script>

<form>
<input type="button" value="A->B" onClick="moveSelected(this.form.a,this.form.b);"><br/>
<select name="a" multiple="multiple" size="4" style="width:100px;">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
</select>
<select name="b" multiple="multiple" size="4" style="width:100px;">
</select>
</form>
tosteweMedlem sedan juni 200291 inlägg
#5

Jo jag löste det :)

Jag langar upp koden senare, ganska nöje med det blev jag oxå :)
TAckar för din hjälp.

tosteweMedlem sedan juni 200291 inlägg
#6

Ett lite problem dock jag får error on page men jag hittar ingen lösning på det...
Någon ???

Min lösning:

<SCRIPT LANGUAGE=javascript>
<!--
//
// Script by Stewe Lundin stewe@sagl.se 20031017
//
function _copy(){
for(var i=0;parentbox.length-1;i++){
if(parentbox*.selected==true){
_add_to_box(i)
}
_check()
}
}
function _remove(){
targetbox.remove(targetbox.selectedIndex);
if(targetbox.selectedIndex>=0){
_remove()
}
_check()
}
function _add_to_box(i){
var objOpt = document.createElement("option");
objOpt.text = parentbox*.value;
objOpt.value = parentbox*.value;
targetbox.add(objOpt);
}
function _check(){
smlfrm.tmptext.value="";
for(var ii=0; ii<=targetbox.options.length-1; ii++){
smlfrm.tmptext.value=smlfrm.tmptext.value+targetbox.options[ii].value+","
}
}
//-->
</SCRIPT>

<html>
<head>
<title>JavaBitch script 1.01 By Stewe Lundin 2003</title>
</head>
<body>
<table>
<tr>
<td>
<select size=6 name="parentbox" multiple="multiple" ondblclick="_copy()">
<option value="Rad1">Rad1</option>
<option value="Rad2">Rad2</option>
<option value="Rad3">Rad3</option>
<option value="Rad4">Rad4</option>
<option value="Rad5">Rad5</option>
<option value="Rad6">Rad6</option>
</select>
</td>
<td>
<input value="Copy" type="button" onclick="_copy()" /><br />
<input type="button" value="Remove" onclick="_remove()" />
</td>
<td>
<select size=6 name="targetbox" multiple="multiple" ondblclick="_remove()">
</select>
</td>
</tr>
</table>

<input type="button" value="Check" onclick="_check()" /><br />
<form action="sida.asp" method="post" name="smlfrm">
<input type="text" size="80" name="tmptext" value=" " />
<input type="submit" Value="send">
</form>
</BODY>
</HTML>***

JojoxxMedlem sedan juni 20004 308 inlägg
#7

Alla formulärselement (<input>,<select>, osv) skall enligt html-standard ligga inom <form>...</form>-taggar.

Sedan reffererar du med ex.

document.formulärsnamn.fältnamn (inte bara fältnamn).
eller
document.forms["formulärsnamn"].elements["fältnamn"]

Bortsett från detta. Bara för att få din kod att inte generera fel:

function _copy(){ 
	for(var i=0;i<parentbox.length;i++){ 
		if(parentbox[i].selected==true){ 
			_add_to_box(i) 
		} 
	} 
	_check() 
} 
function _remove(){ 
	for(var i=parentbox.length-1;i>=0;i--){ 
		if(parentbox[i].selected==true){ 
			parentbox[i]=null; 
		} 
	} 
	_check() 
}

parentbox*.selected==true är lite redundant. parentbox*.selected är ett true/false-värde så det behöver du inte göra en jämförelse med true. Det räcker med;
if(parentbox*.selected){

Men, kör gärna din kod genom en html-validator.***

tosteweMedlem sedan juni 200291 inlägg
#8

koden är nu reviderad och felfri för IE men varför funkar den inte alls under NS???

<html> 
<head> 
<title>JavaScript script 1.01 By Stewe Lundin 2003</title> 
<script language="javascript"> 
<!-- 
// 
// Script by Stewe Lundin [email]stewe@sagl.se[/email] 20031017 
// 
function _copy(){ 
	for(var i=document.forms[0].parentbox.length-1;i>=0;i--){ 
		if(document.forms[0].parentbox[i].selected==true){ 
			_add_to_box(i) 
		} 
		_check() 
	} 
} 

function _remove(){ 
	document.forms[0].targetbox.remove(document.forms[0].targetbox.selectedIndex); 
	if(document.forms[0].targetbox.selectedIndex>=0){ 
		_remove() 
	} 
	_check() 
} 

function _add_to_box(i){ 
	var objOpt = document.createElement("option"); 
	objOpt.text = document.forms[0].parentbox[i].value; 
	objOpt.value = document.forms[0].parentbox[i].value; 
	document.forms[0].targetbox.add(objOpt); 
} 

function _check(){ 
	if (document.forms[0].targetbox.length>=1){
		document.forms[0].tmptext.value=""; 
		for(var ii=0; ii<=document.forms[0].targetbox.options.length-1; ii++){ 
			document.forms[0].tmptext.value=document.forms[0].tmptext.value+document.forms[0].targetbox.options[ii].value+"," 
		}
	} 
} 
//--> 
</script>
</head> 
<body bgcolor="#C2C287" text="#000000" id="all" leftmargin="10" topmargin="10" marginwidth="10" marginheight="10" link="#660000" vlink="#660000" alink="#660000"> 
<form action="javascript.html" method="get" name="smlfrm">
<table> 
<tr> 
<td> 
<select size=6 name="parentbox" multiple="multiple" ondblclick="_copy()"> 
<option value="Rad1">Rad1</option> 
<option value="Rad2">Rad2</option> 
<option value="Rad3">Rad3</option> 
<option value="Rad4">Rad4</option> 
<option value="Rad5">Rad5</option> 
<option value="Rad6">Rad6</option> 
</select> 
</td> 
<td> 
<input value=">>" type="button" onclick="_copy()" /><br /> 
<input type="button" value="<<" onclick="_remove()" /> 
</td> 
<td> 
<select size=6 name="targetbox" multiple="multiple" ondblclick="_remove()"> 
</select> 
</td> 
</tr> 
</table> 

<input type="button" value="Kontrollera" onclick="_check()" /><br /> 
<input type="text" size="80" name="tmptext" value=" " /> 
<input type="submit" Value="Skicka"> 
</form> 
</BODY> 
</HTML>
@ndersMedlem sedan juni 200032 969 inlägg
#9

Jag kan inte svara på frågan, men skulle vilja be om lite [kod]-taggar för ökad läsbarhet av postad kod.

Mvh

tosteweMedlem sedan juni 200291 inlägg
#10

@nders skrev:

Jag kan inte svara på frågan, men skulle vilja be om lite [kod]-taggar för ökad läsbarhet av postad kod.

Mvh

Se ovan

tosteweMedlem sedan juni 200291 inlägg
#11

Fixat och klart.

Jag hade tagit några genvägar som Nätskräp inte gillade samt att jag inte satt id="" utan bara name="" på mina kontroller

139 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)