Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/11/2009, 17:32
fernandomx
 
Fecha de Ingreso: septiembre-2009
Mensajes: 7
Antigüedad: 15 años, 2 meses
Puntos: 0
Sonrisa Borrar de options de select lo elegido en otro

Hola buen día, tengo un problema, que e intentado resolver, creo que bien pero hay un problemita y mi codigo js, se queda ahi,, mi pagina hace lo siguiente,

Es una pagina de registro de usuarios, desarrollada con js, ajax y php ,un usuario puede registrar hasta 20 personas, primero tiene que elegir cuantas registrara, al elegir cuantas se abriran campos al final de la pagina, para el nombre de la persona campo y habitacion que ocupara(estos datos se llenan al final)despues de elegir cuantas registrara. se tiene que elegir un hotel de una lista que se la da a mostrar al usuario, despues de elegido el hotel, se cargan las habitaciones disponibles en ese hotel, y delante de ella, un select(combobox) con un numero de 0 a 10, ya que puede elegir 1 o 10 habitaciones

Habitacion sencilla aqui el select(combobox)
habitacion doble
etc
etc

despues de elegidas las habitaciones, delante de cada persona a registrar(ya antes eligio cuantas registraria), hay un select(combobox) que se carga en automatico con las habitaciones antes elegidas, ej

eligio 2 sencillas y 1 dobles, cada select(combobox) tendria

habitacion sencilla1
habitacion sencilla2
habitacion doble

Hasta aqui todo va perfecto, el problema viene cuando elijo para la persona uno una habitacion, por decir habitacion sencilla1, de los demas selects se tiene que desaparecer esa opcion, pero si elijo, habitacion doble, no se desaperece de los demas, si no que comprueba con la BD cual es la capacidad de la habitacion y dependiendo la capacidad es cuantas veces puedo asignar esa misma habitacion a otra persona.
ej,
Persona 1 habitacion doble
persona 2 habitacion doble
y en los demas select como el cupo es de dos personas desaparece habitacion doble de las opciones,

Lo que intente, fue,

hacer un onchange en un select, lee que seleccionaste, y de que select fue,(recuerden que puede ir de uno a 20) en una variable guardo cuantos participantes eligio inscribir, si son mas de uno,

los select se llaman,
habitacion1
habitacion2
.
.
Hasta n, segun cuantos haya elegido inscribir

hago un bucle, que va de 1 a n participantes
verifico cada select y el que tenga un nombre diferente que con el que hizo la seleccion, lee la longitud que tiene y hago un bucle que barre cada uno de los elementos y en donde encuentre uno igual al elegido en el select, lo borra,
hasta aqui todo bien

el problema es que cuando sale de ese segundo bucle no regresa al anterior, y ya no sigue con los demas participantes si es que los hay.


no se si este mal mi sintaxis o que pase, pongo un pequeño ejemplo de como lo hago


function quitar(ex){
var habitacion;
var longit;
var x=0;
var z=0;
var elemento_elegido=ex.name;//elemento elegido en el select accionado
var participantes=document.form.participantes.value;//numero de regitros(de 1 a 20)
var indice=document.getElementById(e).selectedIndex;
var habitacion_elegida=document.getElementById(e).opti ons[indice].text;//habitacion elegida en el select accionado

for(x=1;x<=participantes;x++){//bucle de 1 a n participantes
habitacion=document.getElementById('habitacion'+x) .name;//se asigna el nombre de la habitacion de cada participante habitacion1..habitacionN
longit=document.getElementById('habitacion'+x).len gth;//y la longitud de la misma
if(habitacion!=elemento_elegido){//si la habitacion es diferente a la del elemento de activacion
for(z=1;z<=len;z++){//barre la lista de elementos de ese select
var valor=document.getElementById('habitacion'+x).opti ons[z].text;//se le va asignando a la variable el valor de cada opcion que tiene
if(habitacion_elegida==valor){//en donde encuentre el mismo nombre que con elegido por el select accionado
document.getElementById('habitacion'+x).remove(z);//borra esa opcion del select
}

}
}
}

la primera vez que entra todo va bien pero no sigue con los demas participantes, en donde encuentra la similitud y borra se detiene, espero alguna ayuda de un buen experto, de antemano mil gracias!!! un gran saludo!!


}