Controlar el tamaño de una lista desplegable

Ant?
21 de Julio del 2004
Saludos a todos.
En el desarrollo de una aplicación web me he encontrado con el problema de una combo o lista desplegable con algunas opciones de muchos caracteres... y claro, la anchura de la combo de "desmadra". ¿Sabeis alguna forma, mediante atributos HTML,CSS,JS,como sea, de controlar este tamaño? Me sería de gran ayuda, y solo necesito que funcione en IE.
Gracias por anticipado

Mikel
21 de Julio del 2004
Al combo le puedes dar una anchura fija mediante estilos (CSS).

Create una clase en la que defines el width como un numero N de pixels (ej. width: 100px;). Al definir el combo asigna esta clase al combo y el combo cogera una anchura de N pixels.

Donostiatik agurrak !!!

Mikel

LiMaX
21 de Julio del 2004
Un combobox toma la longitud de la cadena de caracteres más larga que tiene que mostrar, así que hay que tener en cuenta esta opción a la hora del diseño de la estética de nuestra página.

Por desgracia no se le puede asignar un tamaño fijo más que el que tenga dicha cadena más larga

Además piensa que un combobox no tiene barra de desplazamiento lateral, por lo que si tubiese una cadena que no se viese completa no se podría elegir bien

como solución, y si los valores de esas cadenas que se van a mostrar y sus correspondientes valores los toma dinámicamente (ya es un poco lio) te sujiero que le crees una "barra" de caracteres (por ejemplo "-" con valor enblanco "") qeu tenga la longitud máxima de todos las cadenas que vaya a tomar

he creado un script que crea un combobox en un formulario con un tamaño máximo de 51 guiones "-" para cubrir una cadena de 32 letras en minúscula XD

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Crear un combobox en java</title>
<script>

// Script creado en 2004 por LiMaX
// puedes copiarme y modificarme mientras mantengas una referencia del auotr original :)

//este script crea un combobox en base a las opciones y valores abajo indicadas en un formulario
//las opciones y sus valores los puede adquirir si en vez de literales les asignamos variables

var opciones = new Array (); // lo que se presentará en cada opción
opciones[0] = "a"
opciones[1] = "b"
opciones[2] = "c"
opciones[3] = "los peores son los que no se ven"

var valores = new Array (); // lo que valdrá cada opción
valores[0] = "1"
valores[1] = "2"
valores[2] = "3"
valores[3] = "demonios del mal"

var totaldeopciones = 4; // tenemos que indicarle cuantas opciones tenemos

var veces = 51; // longitud que va a tener la "barra"
var caracter = "-"; // caracter que queremos que tome la "barra" - Si es el signo "-" o alguno pequeño ten en cuenta que las opciones pueden ser muy largas

// en teoría no hay que modificar más abajo de aquí

var aescribir = ""; // será la "barra" en sí
var i = 0; // variable auxiliar
var x = 0; // variable auxiliar
var todo = ""; // esto cojería todo el combobox en sí
var nada = "";
function escribirbarra(){
for (x = 0; x < veces; x++){ //repite la orden de abajo las "veces" que le hayamos indicado...
aescribir = aescribir + caracter; // la "barra" va aumentando cada vez con el "caracter" que le hayamos dicho
}
todo = todo + '<select size="1" name="D1">'; // empieza el combobox
todo = todo + '<option value="">'; // empieza la "barra"
todo = todo + aescribir; // la barra en sí
todo = todo + '</option>'; // acaba la "barra"
for (i = 0; i < totaldeopciones; i++){ // se repite el número de veces que opciones haya
todo = todo + '<option value="'; // empieza la opción
todo = todo + valores[i]; // valor de la opción
todo = todo + '">'; // sigue la opción
todo = todo + opciones[i]; // lo que se ve de la opción
todo = todo + '</option>'; // fin de la opción
}
escribetodo.innerHTML= todo; // lo escribe todo
}
</script>
</head>
<body onload="escribirbarra()">
<form name="formulario" ID="formulario">
<span title="escribetodo" id="escribetodo">&nbsp;</span>
</form>
</body>
</html>