HDP115

Elemento select en HTML

El elemento `<select>` crea un control de selección desplegable o lista que permite a los usuarios elegir entre varias opciones predefinidas.

CE

Cristian Escalante

Última actualización: 27 de marzo de 2025

Elemento select en HTML

El elemento <select> crea un control de selección desplegable o lista que permite a los usuarios elegir entre varias opciones predefinidas. Se usa principalmente en formularios para recolectar datos del usuario de manera estructurada.

<select name="pais">
  <option value="mx">México</option>
  <option value="es">España</option>
  <option value="co">Colombia</option>
  <option value="ar">Argentina</option>
</select>

Este elemento funciona en conjunto con el elemento <option>, que define cada una de las opciones disponibles para seleccionar. Es común utilizar el atributo value para definir el valor que se enviará al servidor cuando se seleccione esa opción.

Atributos principales del elemento select

  • name: Define el nombre del control, utilizado para referenciar el elemento en el envío del formulario.
  • id: Proporciona un identificador único para el elemento, útil para vincularlo con etiquetas <label>.
  • multiple: Permite seleccionar múltiples opciones (convierte el desplegable en una lista).
  • size: Define cuántas opciones son visibles a la vez en la lista.
  • required: Indica que se debe seleccionar una opción para poder enviar el formulario.
  • disabled: Desactiva el control para que no pueda ser utilizado.
  • autofocus: Hace que el elemento reciba el foco automáticamente al cargar la página.

Atributos del elemento option

  • value: El valor que se enviará al servidor cuando esta opción sea seleccionada.
  • selected: Establece la opción como seleccionada por defecto.
  • disabled: Deshabilita la opción para que no pueda ser seleccionada.
  • label: Proporciona un nombre corto para la opción (se usa raramente).

Select con opción por defecto

<select name="provincia">
  <option value="">Selecciona una provincia</option>
  <option value="bcn">Barcelona</option>
  <option value="mad">Madrid</option>
  <option value="val" selected>Valencia</option>
  <option value="sev">Sevilla</option>
</select>

Select con selección múltiple

<label for="lenguajes">Selecciona los lenguajes que conoces:</label>
<select id="lenguajes" name="lenguajes[]" multiple size="4">
  <option value="html">HTML</option>
  <option value="css">CSS</option>
  <option value="js">JavaScript</option>
  <option value="php">PHP</option>
  <option value="python">Python</option>
  <option value="ruby">Ruby</option>
</select>

Usando optgroup para agrupar opciones

El elemento <optgroup> permite organizar las opciones en grupos lógicos, mejorando la usabilidad del control:

<label for="autos">Elige un modelo de auto:</label>
<select id="autos" name="auto">
  <optgroup label="Vehículos Europeos">
    <option value="volvo">Volvo</option>
    <option value="mercedes">Mercedes</option>
    <option value="audi">Audi</option>
  </optgroup>
  <optgroup label="Vehículos Americanos">
    <option value="ford">Ford</option>
    <option value="chevrolet">Chevrolet</option>
    <option value="dodge">Dodge</option>
  </optgroup>
  <optgroup label="Vehículos Asiáticos">
    <option value="toyota">Toyota</option>
    <option value="honda">Honda</option>
    <option value="hyundai">Hyundai</option>
  </optgroup>
</select>

Select deshabilitado y con opciones deshabilitadas

<select name="curso" disabled>
  <option value="html5">HTML5</option>
  <option value="css3">CSS3</option>
  <option value="js">JavaScript</option>
</select>

<select name="plan">
  <option value="">Selecciona un plan</option>
  <option value="free">Plan Gratuito</option>
  <option value="basic">Plan Básico</option>
  <option value="pro" disabled>Plan Pro (No disponible)</option>
  <option value="enterprise">Plan Empresarial</option>
</select>

Ejemplo completo con validación

<form action="/procesar" method="post">
  <div>
    <label for="pais">País de residencia:</label>
    <select id="pais" name="pais" required>
      <option value="">-- Selecciona un país --</option>
      <optgroup label="América">
        <option value="mx">México</option>
        <option value="us">Estados Unidos</option>
        <option value="ca">Canadá</option>
        <option value="br">Brasil</option>
        <option value="ar">Argentina</option>
      </optgroup>
      <optgroup label="Europa">
        <option value="es">España</option>
        <option value="fr">Francia</option>
        <option value="uk">Reino Unido</option>
        <option value="it">Italia</option>
      </optgroup>
      <optgroup label="Asia">
        <option value="jp">Japón</option>
        <option value="cn">China</option>
        <option value="in">India</option>
      </optgroup>
    </select>
    <span class="error">Por favor, selecciona tu país</span>
  </div>

  <div>
    <label for="intereses">Áreas de interés (puedes seleccionar varias):</label>
    <select id="intereses" name="intereses[]" multiple size="5">
      <option value="tech">Tecnología</option>
      <option value="health">Salud y Bienestar</option>
      <option value="finance">Finanzas</option>
      <option value="edu">Educación</option>
      <option value="art">Arte y Cultura</option>
      <option value="travel">Viajes</option>
      <option value="food">Gastronomía</option>
    </select>
    <small>Mantén presionada la tecla Ctrl (o Cmd en Mac) para seleccionar múltiples opciones.</small>
  </div>

  <button type="submit">Enviar</button>
</form>

Buenas prácticas

  • Siempre usa <label>: Asocia cada <select> con una etiqueta para mejorar la accesibilidad.
    <label for="ciudad">Ciudad:</label>
    <select id="ciudad" name="ciudad">
      <!-- opciones -->
    </select>
    
  • Proporciona una opción vacía o de ayuda: Incluye una primera opción como instrucción, especialmente si el campo es opcional.
    <select name="categoria">
      <option value="">-- Selecciona una categoría --</option>
      <!-- otras opciones -->
    </select>
    
  • Usa optgroup para listas largas: Mejora la organización y usabilidad al agrupar opciones relacionadas.
  • Establece un ancho adecuado: Asegúrate de que el control tenga suficiente ancho para mostrar completamente las opciones más largas.
    select {
      width: 100%;
      max-width: 300px;
    }
    
  • Considera alternativas para listas muy largas: Si tienes muchas opciones (como países), considera usar un campo de texto con autocompletado o una solución JavaScript más avanzada.
Elemento label en HTML
El elemento label en HTML se utiliza para asociar texto desc...
Elemento header en HTML
El elemento `<header>` representa el contenido introductorio...
Referencias
MDN Contributors. (20 de marzo 2025). <select>: The HTML Select element. https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select
W3Schools. HTML <select> Tag. https://www.w3schools.com/tags/tag_select.asp

Conceptos Básicos de CSS

Aprende los conceptos básicos de CSS

Conceptos Básicos de JavaScript

Aprende los conceptos básicos de JavaScript

Conceptos Básicos SQL

Aprende los conceptos básicos de SQL

Conceptos Básicos de GIT

Aprende los conceptos básicos de GIT

Conceptos Básicos de Python

Aprende los conceptos básicos de Python

Conceptos Básicos de UML

Aprende los conceptos básicos de UML

Refuerzo Academico de Herramientas de Productividad 2025