Foros del Web » Programando para Internet » Javascript »

Ordenar un select alfabéticamente

Estas en el tema de Ordenar un select alfabéticamente en el foro de Javascript en Foros del Web. Hola, tengo un select con unos valores y unos textos... Querría hacer una función que me ordenara alfabéticamente los options del select, pero no por ...
  #1 (permalink)  
Antiguo 07/08/2005, 18:22
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 3 meses
Puntos: 90
Ordenar un select alfabéticamente

Hola, tengo un select con unos valores y unos textos...

Querría hacer una función que me ordenara alfabéticamente los options del select, pero no por los valores sino por los textos que aparecene en el select, o sea por lo que hay entre el <option> y el </option>

Se puede ? hay alguna función que haga esto ??

Saludos
__________________
Esteban Quintana
  #2 (permalink)  
Antiguo 08/08/2005, 01:24
Avatar de TheWolF  
Fecha de Ingreso: junio-2005
Mensajes: 24
Antigüedad: 18 años, 11 meses
Puntos: 0
Por algún casual no sacarás la información de una base de datos no?

Salu2.
__________________
.: Nada es tan fácil como parece serlo :.
Los viernes a última hora no hagas experimentos :)
  #3 (permalink)  
Antiguo 08/08/2005, 01:42
 
Fecha de Ingreso: julio-2005
Mensajes: 90
Antigüedad: 18 años, 9 meses
Puntos: 1
Si sacas la información de una BBDD, lo mejor es que la saques ya ordenada.
  #4 (permalink)  
Antiguo 08/08/2005, 08:17
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 3 meses
Puntos: 90
jajaja, si, pero el tema es que no uso una Base de datos, si la usaría si que sería fácil "ORDER BY apellido", pero no uso una base de datos...

Saludos
PD: A la vez quiero colocar una opción para ordenarlos de varias maneras distintas en tiempo real, no utilizando nuevamente el servidor...
__________________
Esteban Quintana
  #5 (permalink)  
Antiguo 08/08/2005, 09:20
 
Fecha de Ingreso: julio-2005
Mensajes: 90
Antigüedad: 18 años, 9 meses
Puntos: 1
No usas una BBDD ?, entonces los datos son estáticos, que los obtienes de un fichero, o los entras a pelo en el codigo ??. Porque si es así, puedes ordenarlo previamente antes de meterlos en el fichero o en el codigo. De todas formas hay una funcion para ordenación de arrays en Javascript, la función es sort.
  #6 (permalink)  
Antiguo 08/08/2005, 10:22
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
A ver si te sirve:

Código:
function ordenar()	{
	with (document.forms["tuForm"]["tuSelect"])	{
		for (var i = 0; i < options.length - 1; i ++)
			if (options[i].text <= options[i + 1].text)	{
				temptext = options[i].text;
				tempvalue = options[i].value;
				options[i].text = options[i + 1].text;
				options[i].value = options[i + 1].value;
				options[i + 1].text = temptext;
				options[i + 1].value = tempvalue;
			}
	}
}
No utiliza métodos especiales, porque no creo que sea necesario.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #7 (permalink)  
Antiguo 08/08/2005, 14:55
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 3 meses
Puntos: 90
Hola caricatos, está buena tu función pero solo me ordena los pares de uno en uno, comparando el 12 23 45 67 89...Si bien le arreglé lso paréntesis que le fantan al for tampoco me lo hace, lo tengo que ejecutar varias veces para que termine de funcionar...Checkea el código...

Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
function ordenar()	{
	with (document.forms["formulario"]["select"])	{
		for (var i = 0; i < options.length - 1; i ++){
			if (options[i].text <= options[i + 1].text)	{
				temptext = options[i].text;
				tempvalue = options[i].value;
				options[i].text = options[i + 1].text;
				options[i].value = options[i + 1].value;
				options[i + 1].text = temptext;
				options[i + 1].value = tempvalue;
			}
		}	
	}
}
</script>
</head>

<body>
<form action="" method="post" name="formulario" id="formulario">
  <select name="select">
    <option value="p">p</option>
    <option value="o">o</option>
    <option value="i">i</option>
    <option value="u">u</option>
    <option value="y">y</option>
    <option value="t">t</option>
    <option value="r">r</option>
    <option value="e">e</option>
    <option value="w">w</option>
    <option value="q">q</option>
    <option value="l">l</option>
    <option value="k">k</option>
    <option value="j">j</option>
    <option value="h">h</option>
    <option value="g">g</option>
    <option value="f">f</option>
    <option value="d">d</option>
    <option value="s">s</option>
    <option value="a">a</option>
    <option value="m">m</option>
    <option value="n">n</option>
    <option value="b">b</option>
    <option value="v">v</option>
    <option value="c">c</option>
    <option value="x">x</option>
    <option value="z">z</option>
  </select>
  <input type="button" name="Button" value="Button" onClick="ordenar()">
</form>
</body>
</html>
Espero que puedas encuentrar la falla...

Saludos
__________________
Esteban Quintana
  #8 (permalink)  
Antiguo 08/08/2005, 15:01
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 3 meses
Puntos: 90
Para sort: hay estructuras hash en JS o sea un array de 2 valores por item ?
Para la forma manual: Cuanas veces haya que iterarlo no depende de cuan desordenados entén ???

Hay estructuras do {}until o while en JS ??

Saludos
__________________
Esteban Quintana

Última edición por monoswim; 08/08/2005 a las 15:06
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 11:13.