Foros del Web » Programando para Internet » Javascript »

Ubicar posición dentro de select

Estas en el tema de Ubicar posición dentro de select en el foro de Javascript en Foros del Web. Saludos. Tengo un select múltiple en el cual puedo mover los registros de abajo hacia arriba y al contrario. El problema ocurre cuando subiendo un ...
  #1 (permalink)  
Antiguo 24/11/2005, 09:01
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 22 años, 10 meses
Puntos: 1
Ubicar posición dentro de select

Saludos.

Tengo un select múltiple en el cual puedo mover los registros de abajo hacia arriba y al contrario.

El problema ocurre cuando subiendo un registro, llega hasta el inicio del select, si vuelvo a intertar subirlo, me da un error de JS.

Este es el script:

Código:
function moveup(list) {
    var daflag = false
        for (var i = 0; i <= list.options.length-1; i++) {
                if (list[i].selected) {
                      list.insertBefore(list[i],list[i-1]);
                }
        }
}
Así que tengo que validar que la posición a la que quiero subir el registro no es la número 1. Intente con algo así:

Código:
function moveup(list) {
     var daflag = false
         for (var i = 0; i <= list.options.length-1; i++) {
                 if (list[i-1]>0) {
                    if (list[i].selected) {
                      list.insertBefore(list[i],list[i-1]);
                     }
                }
         }
 }
Pero evidentemente no sirve así.

Alguna idea ??

Gracias
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
  #2 (permalink)  
Antiguo 24/11/2005, 09:30
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 9 meses
Puntos: 772
Hola José Molina

Ahora ando escaso de tiempo para revisar el código, pero te dejo esto otro a ver si te sirve de ayuda:
Código PHP:
<html>
<
head>
<
script type="text/javascript">
function 
arriba() {
    
obj=document.getElementById('sel');
    
indice=obj.selectedIndex;
    if (
indice>0cambiar(obj,indice,indice-1);
}
function 
abajo() {
    
obj=document.getElementById('sel');
    
indice=obj.selectedIndex;
    if (
indice!=-&& indice<obj.length-1)
        
cambiar(obj,indice,indice+1);
}
function 
cambiar(obj,num1,num2) {
    
proVal=obj.options[num1].value;
    
proTex=obj.options[num1].text;
    
obj.options[num1].value=obj.options[num2].value;    
    
obj.options[num1].text=obj.options[num2].text;    
    
obj.options[num2].value=proVal;
    
obj.options[num2].text=proTex;
}
</script>
</head>

<body bgcolor="#FFFFFF" text="#000000">
<select id="sel" size="5">
<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>
</select>
<input type="button" value="Arriba" onClick="arriba()">
<input type="button" value="Abajo" onClick="abajo()">
</body>
</html> 
Saludos,
  #3 (permalink)  
Antiguo 24/11/2005, 21:01
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 19 años, 3 meses
Puntos: 39
Hola JavierB y José Molina!
José Molina, has que el indice del for empiece en 1.
JavierB, con tu permiso modifico una lineas de tu script:
funcion arriba
Código:
    if (indice>0){ 
		cambiar(obj,indice,indice-1);
		obj.selectedIndex--;
}
funcion abajo
Código:
    if (indice!=-1 && indice<obj.length-1){
        cambiar(obj,indice,indice+1);
		obj.selectedIndex++;
	}
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:38.