webForumDet fria alternativet

SelectedIndex Kopiera från listbox >> listbox

JavaScript

10 svar · 450 visningar · startad av tostewe

Medlem sedan juni 200291 inlägg
Frågan#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

Medlem 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.

Medlem 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 ???

Medlem 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>
Medlem 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.

Medlem 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>***

Medlem 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.***

Medlem 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>
Medlem sedan juni 200032 967 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

Medlem 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

Medlem 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

278 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
145 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)