T tostewe Medlem sedan juni 2002 91 inlägg Frågan 17 okt. 2003 10:12 #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
J Jojoxx Medlem sedan juni 2000 4 308 inlägg 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.
T tostewe Medlem sedan juni 2002 91 inlägg 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 ???
J Jojoxx Medlem sedan juni 2000 4 308 inlägg 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>
T tostewe Medlem sedan juni 2002 91 inlägg Jo jag löste det :)
Jag langar upp koden senare, ganska nöje med det blev jag oxå :)
TAckar för din hjälp.
T tostewe Medlem sedan juni 2002 91 inlägg 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>***
J Jojoxx Medlem sedan juni 2000 4 308 inlägg 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 .***
T tostewe Medlem sedan juni 2002 91 inlägg 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>
@nders Medlem sedan juni 2000 32 967 inlägg Jag kan inte svara på frågan, men skulle vilja be om lite [kod]-taggar för ökad läsbarhet av postad kod.
Mvh
T tostewe Medlem sedan juni 2002 91 inlägg 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