Manupilar valores de un select list

Intento pasar valores de un select list multiple a otro, encontre un codigo que lo hace genial.
Pero trae un detalle que al pasar los valores lo que se encunetra dentro del <option value=''>TEXTO</option> osea 'TEXTO' . Al pasarlo al otro select ese TEXTO me lo coloca como si fuera el VALUE. Y en el VALUE del origen tengo un ID.
No se como modificar la primera funcion addOption(), ¿qué creo que ahi es donde hay que modificar algun parametro pero no se mucho de javascript me podrias apoyar?
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.selected)
{
selectedText[selectedCount] = theSelFrom.options.text;
selectedValues[selectedCount] = theSelFrom.options.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, selectedValues);
}
if(NS4) history.go(0);
}


1 respuesta

Respuesta
1
He probado tu código y funciona bien:
<html>
<head>
<script>
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 ix;
// Find the selected Options in reverse order
// and delete them from the 'from' Select.
for(ix=selLength-1; ix>=0; ix--){
if(theSelFrom.options[ix].selected){
selectedText[selectedCount] = theSelFrom.options[ix].text;
selectedValues[selectedCount] = theSelFrom.options[ix].value;
deleteOption(theSelFrom, ix);
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(ix=selectedCount-1; ix>=0; ix--){
addOption(theSelTo, selectedText[ix], selectedValues[ix]);
}
if(NS4) history.go(0);
}
</script>
</head>
<body>
<select id="s1" multiple style="float:left">
<option id="op1">option 1</option>
<option id="op2">option 2</option>
<option id="op3">option 3</option>
<option id="op4">option 4</option>
</select>
<table style="float:left">
<tr>
<td><input type="button" onclick="moveOptions(document.getElementById('s1'), document.getElementById('s2'));" value="S1 -> S2"></input></td>
</tr>
<tr>
<td><input type="button" onclick="moveOptions(document.getElementById('s2'), document.getElementById('s1'));" value="S1 <- S2"></input></td>
</tr>
</table>
<select id="s2" multiple style="float:left">
<option id="op5">option 5</option>
<option id="op6">option 6</option>
<option id="op7">option 7</option>
<option id="op8">option 8</option>
</select>
</body>
</html>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas