PDA

View Full Version : selected index combobox



riptide
05-14-2007, 03:28 PM
I have a a script where I move options from a sclect list to another select list.
the problem is when I move a value from the first list it get deleted from that list and I don't want that to happen.

The second problem is the user can move options from the second list to the first one. I want them to be able to delete things from the second list. but not add it to the first list.(I almost messed up the code trying to fix that.)

The third problem is the selected index values go in to one array and the selected index text go into another array. If the user deletes something in the second box I need to have that item deleted from both of the arrays. and I don't know how to connect them.

here is the code.

<script language="JavaScript" type="text/javascript">
<!--

var NS4 = (navigator.appName == "Netscape" && parseInt(navigator.appVersion) < 5);

function addOption(theSel, theText, theValue)
{
var newOpt = new Option(theText, theValue);
var selLength = theSel.length;
theSel.options[selLength] = newOpt;
}

function deleteOption(theSel, theIndex)
{
var selLength = theSel.length;
if(selLength>0)
{
theSel.options[theIndex] = null;
}
}

function moveOptions(theSelFrom, theSelTo)
{

var selLength = theSelFrom.length;
var selectedText = new Array();
var selectedValues = new Array();
var selectedCount = 0;

var i;

// Find the selected Options in reverse order
// and delete them from the 'from' Select.
for(i=selLength-1; i>=0; i--)
{
if(theSelFrom.options[i].selected)
{
selectedText[selectedCount] = theSelFrom.options[i].text;
selectedValues[selectedCount] = theSelFrom.options[i].value;
deleteOption(theSelFrom, i);
selectedCount++;
}
}

// Add the selected text/values in reverse order.
// This will add the Options to the 'to' Select
// in the same order as they were in the 'from' Select.
for(i=selectedCount-1; i>=0; i--)
{
addOption(theSelTo, selectedText[i], selectedValues[i]);
}

if(NS4) history.go(0);
}

//-->
</script>

</head>
<body>
<form action="yourpage.asp" method="post">
<table border="0">
<tr>
<td>
<select name="sel1" size="10" multiple="multiple">
<option value="1">Left1</option>
<option value="2">Left2</option>
<option value="3">Left3</option>
<option value="4">Left4</option>
<option value="5">Left5</option>
</select>
</td>
<td align="center" valign="middle">
<input type="button" value="--&gt;"
onclick="moveOptions(this.form.sel1, this.form.sel2);" /><br />
<input type="button" value="&lt;--"
onclick="moveOptions(this.form.sel2,this.form.sel1);" />
</td>
<td>
<select name="sel2" size="10" multiple="multiple">
<option value="1">playlist</option>

</select>
</td>
</tr>
</table>
</form>

riptide
05-15-2007, 02:07 PM
the problem I'm having is if the user selects from the first box; they may have selected things in any order. so because the array for the second box might be in any order. I can't have the user deleat what they want from the array using delete() or splice().