Foros del Web » Programando para Internet » Javascript »

ordernar los elementos de un select

Estas en el tema de ordernar los elementos de un select en el foro de Javascript en Foros del Web. Hola, queria preguntar si alguien sabe como ordenar los elementos de un select, ejemplo: Código PHP: < select name = "vendedor"  >                                 < option > luis ...
  #1 (permalink)  
Antiguo 24/02/2007, 09:46
 
Fecha de Ingreso: diciembre-2006
Mensajes: 381
Antigüedad: 17 años, 4 meses
Puntos: 2
ordernar los elementos de un select

Hola, queria preguntar si alguien sabe como ordenar los elementos de un select, ejemplo:

Código PHP:
<select name="vendedor" >                                
<
option>luis</option
<
option>carlos</option>        
<
option>jorge</option>        
<
option>kira</option>        
<
option>azlan</option>        
</
select
alguien sabe como ordenarlos alfabeticamente por medio de Javascript.
Este en realidad es un ejemplo el verdadero tiene mas de 100 options

Última edición por StrikeFreedom; 24/02/2007 a las 11:04
  #2 (permalink)  
Antiguo 24/02/2007, 19:52
 
Fecha de Ingreso: enero-2007
Mensajes: 405
Antigüedad: 17 años, 4 meses
Puntos: 3
Re: ordernar los elementos de un select

Código PHP:
function obtenerValorOrdenado(id){
var 
nombres = new Array();
var 
campo document.getElementById(id);
var 
i;
for(
i=0;i<campo.options.length;i++){
       
nombres.push(campo.options[i].text);
}
nombres.sort();
for(
i=0;i<nombres.length;i++){
        
campo.options[i].text nombres[i];
}


y el html:

Código HTML:
<select id="id_select" name="vendedor" >                                 
<option>luis</option>  
<option>carlos</option>         
<option>jorge</option>         
<option>kira</option>         
<option>azlan</option>         
</select> 
para obtener los valores, llama a la funcion obtenerValorOrdenado('id_select')

Saludos

Última edición por wigglyUtrera; 25/02/2007 a las 10:54
  #3 (permalink)  
Antiguo 25/02/2007, 17:19
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: ordernar los elementos de un select

La pena es que eso no te ordenaría los values si los hubiere, esto sí:
Código PHP:
<select id="id_select" name="vendedor" onchange="alert(this.options[this.options.selectedIndex].value);" >
    <
option value="luis">luis</option>  
    <
option value="carlos">carlos</option>     
    <
option value="paco">paco</option>
    <
option value="jorge">jorge</option>         
    <
option value="kira">kira</option>         
    <
option value="azlan">azlan</option>         
</
select

<
script>

function 
ordenar_select(id) {
    var 
elSelect=document.getElementById(id);
    
//copiamos los text y los value a un array auxiliar
    
for(var i=0aux=new Array(); i<elSelect.options.lengthi++) {
        
aux[i]=new Object();
        
aux[i].texto=elSelect.options[i].text;
        
aux[i].valor=elSelect.options[i].value;
    }
    
//ordenamos el array aux segun la propiedad text
    
aux.sort( function(a,b) {
        if( 
a.texto<b.texto ) return -1;
        else if( 
a.texto>b.texto ) return 1;
        else return 
0;
    } );
    
//ahora ponemos el array aux como si fueran las options del select
    
for(i=0;i<aux.length;i++){
        
elSelect.options[i].text aux[i].texto;
        
elSelect.options[i].value aux[i].valor;
    }
}

ordenar_select("id_select"); 
Y además, si tenemos más atributos pues supongo que habría que almacenarlos de la misma manera en la variable aux y volcarlos igual en el select después.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #4 (permalink)  
Antiguo 26/02/2007, 00:20
 
Fecha de Ingreso: diciembre-2006
Mensajes: 381
Antigüedad: 17 años, 4 meses
Puntos: 2
Re: ordernar los elementos de un select

Gracias por responder, ahora mismo pongo en practica tus ejemplos.
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 09:00.