Hola
sanmi69:
¿Lo has intentado? ¿Con qué código base contamos? Acostumbrate a colocar un código sobre el que todos podamos trabajar por igual.
Te dejo aquí un boceto, la función
abajo() te la puedes imaginar:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<meta http-equiv="Content-type" content="text/html;charset=iso-8859-1" />
<meta name="Author" content="derkeNuke" />
<title>Página nueva</title>
<style type="text/css">
</style>
</head>
<body>
<select multiple="multiple" size="10" id="elSelect">
<option value="0">cero</option>
<option value="1">uno</option>
<option value="2">dos</option>
<option value="3">tres</option>
<option value="4">cuatro</option>
<option value="5">cinco</option>
<option value="6">seis</option>
<option value="7">siete</option>
<option value="8">ocho</option>
<option value="9">nueve</option>
</select>
<button type="button" onclick="arriba()">Arriba</button>
<button type="button" onclick="abajo()">Abajo</button>
<script type="text/javascript">
<!--
// document.getElementById abreviado
function $(x) { return document.getElementById(x); }
function arriba() {
var elSel = $("elSelect");
var opciones = elSel.options;
var opcionesSeleccionadas = [];
for(var i=0, l=opciones.length; i<l; i++) {
if( opciones[i].selected )
opcionesSeleccionadas.push( opciones[i] );
}
// ahora tenemos que sustituir opcionA por opcionB (burdamente porque el IE no deja directamente)
function cambiarPosicionOption(optionA, optionB) {
elSel.options[ optionA.index ] = new Option(optionB.text, optionB.value);
elSel.options[ optionB.index ] = new Option(optionA.text, optionA.value);
}
for(var i=0, l=opcionesSeleccionadas.length; i<l; i++) {
// sustituimos cada opcion por la anterior
var hayAnterior = opcionesSeleccionadas[i].index > 0;
if( hayAnterior ) {
var elAnterior = elSel.options[ opcionesSeleccionadas[i].index - 1 ];
cambiarPosicionOption( opcionesSeleccionadas[i], elAnterior);
}
}
}
function abajo() {
}
// -->
</script>
</body>
</html>
Un saludo.