Ver Mensaje Individual
  #7 (permalink)  
Antiguo 20/10/2010, 20:16
Avatar de zerokilled
zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 7 meses
Puntos: 1485
Respuesta: eliminar y restaurar opciones select

@isabelm,

estaba trabajando con un ejemplo en base al primer código pero veo que el último código publicado es un tanto distinto. de todos modos lo presento para que analices la forma que antes explicaba, pero sobre todo que te sirva de idea o base para lo que quieres lograr. espero que no tengas problema en analizarlo porque la verdad esta mucho más simplificado. claro, en este ejemplo he eliminado otras características como evitar seleccionar otra opción en el mismo select.

Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
select{
width:10em;
}
</style>
<script type="text/javascript">
var cache = function(){
var steps = [];
return{
append: function(item){
return steps.push(item);
},

undo: function(){
return steps.pop();
}
}}();

function delOption(select){
var itemCache = [], combo;
for(var i = 0; combo = select.form.elements[select.name][i]; i++){
	if(combo === select) continue;
	for(var j = 0; combo.options[j]; j++) if(select.value == combo.options[j].value){ 
		itemCache.push({owner: combo, index: combo.options[j].index, option: combo.removeChild(combo.options[j])});
		break;
		}
	}
if(itemCache.length) cache.append(itemCache); // add only if not empty;
}

function restore(item){
if(!item) return alert("No more item to restore");
while(item.length){
	var object = item.shift();
	object.owner.add(object.option, object.owner.options[object.index]);
	}
}
</script>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
<select id="regalo_1" name="regalo[]" size="10" onchange="delOption(this)">
<option value="">Regalo para Ti</option>
<option value="Moto">Moto</option>
<option value="Coche">Coche</option>
<option value="Barco">Barco</option>
<option value="Bicicleta">Bicicleta</option>
</select>
 
<select id="regalo_2" name="regalo[]" size="10" onchange="delOption(this)">
<option value="">Regalo para Padres</option>
<option value="Coche">Coche</option>
<option value="Casa">Casa</option>
<option value="Viaje">Viaje</option>
<option value="Moto">Moto</option>
</select>
 
<select id="regalo_3" name="regalo[]" size="10" onchange="delOption(this)">
<option value="">Regalo para Hermanos</option>
<option value="Consola">Consola</option>
<option value="Bicicleta">Bicicleta</option>
<option value="Moto">Moto</option>
<option value="Mp4">Mp4</option>
</select>
 
<input type="button" id="deshacer" value="Reestablecer Opciones" onclick="restore(cache.undo());" />
</form>
</body>
</html>
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 20/10/2010 a las 20:53