Botones de opción HTML en formularios: guía lista para producción
Los botones de opción son el control correcto cuando un visitante debe elegir exactamente una opción de una lista corta. Funcionan bien para la selección de planes, preferencias de contacto, rangos de presupuesto, preguntas de sí o no y respuestas a encuestas.
The common mistake is treating radio buttons as small visual widgets instead of form data. A production radio group needs a clear question, accessible labels, stable name and value attributes, validation, and a backend that receives the selected value cleanly.
Formulario de botón de opción básico
Use the same name for every option in the group. Use a different value for each option.
<form action="https://api.formsfort.com/submit" method="POST"> <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY" />
<fieldset> <legend>Preferred contact method</legend>
<label> <input type="radio" name="contact_method" value="email" required /> Email </label>
<label> <input type="radio" name="contact_method" value="phone" /> Phone </label>
<label> <input type="radio" name="contact_method" value="text" /> Text message </label> </fieldset>
<input type="checkbox" name="botcheck" style="display:none" /> <button type="submit">Send preference</button></form>Si el visitante selecciona “Correo electrónico”, el backend recibe:
contact_method=emailEse es el objetivo completo de un grupo de radio: un nombre de campo, un valor seleccionado.
Botones de opción frente a casillas de verificación frente a menús desplegables de selección
Elige el input en función de la decisión que le pides al visitante que tome.
| Control | Mejor para | Evitar cuando |
|---|---|---|
| Botones de opción | Una elección entre 2 y 5 opciones visibles | La lista es larga |
| Casillas de verificación | Múltiples opciones independientes | Solo se permite una respuesta |
| Seleccionar menú desplegable | Una elección entre muchas opciones | Las opciones deben compararse de un vistazo |
Los botones de opción suelen ser mejores que un menú desplegable cuando las opciones son pocas. Los visitantes pueden escanear todas las opciones sin abrir un menú.
Usar conjunto de campos y leyenda para accesibilidad
Labels identify individual options. A legend identifies the question the options answer.
<fieldset> <legend>Which plan are you interested in?</legend> <label><input type="radio" name="plan" value="free" required /> Free</label> <label><input type="radio" name="plan" value="pro" /> Pro</label> <label><input type="radio" name="plan" value="business" /> Business</label></fieldset>. Esta estructura ayuda a los usuarios de lectores de pantalla a comprender que “Gratis”, “Pro” y “Business” son todas respuestas a la misma pregunta del plan.
Grupos de radio requeridos
To require an answer, add required to one radio input in the group. You can add it to every option, but one is enough because the browser validates the group by name.
<label> <input type="radio" name="budget" value="under-1000" required /> Under $1,000</label><label> <input type="radio" name="budget" value="1000-5000" /> $1,000 to $5,000</label>No confíe únicamente en la validación del lado del cliente. El backend de su formulario también debe aceptar solo los valores esperados cuando el campo controla enrutamiento importante o lógica de negocios.
Selecciones predeterminadas
Utilice una selección predeterminada sólo cuando sea realmente segura.
<label> <input type="radio" name="newsletter_frequency" value="weekly" checked /> Weekly</label><label> <input type="radio" name="newsletter_frequency" value="monthly" /> Monthly</label>Un valor predeterminado puede reducir la fricción con preferencias inofensivas. Evite valores predeterminados de consentimiento, intención de fijación de precios, donaciones, encuestas o cualquier cosa en la que la preselección de una respuesta pueda sesgar la respuesta.
Aplicar estilo a los botones de opción sin romperlos
Mantenga la entrada nativa en el DOM y mantenga la etiqueta en la que se puede hacer clic. Esto le brinda compatibilidad con teclado y lector de pantalla sin JavaScript personalizado.
<fieldset class="radio-cards"> <legend>Project type</legend>
<label> <input type="radio" name="project_type" value="website" required /> <span>Website</span> </label>
<label> <input type="radio" name="project_type" value="saas" /> <span>SaaS app</span> </label></fieldset>.radio-cards { display: grid; gap: 12px; border: 0; padding: 0;}
.radio-cards label { display: flex; align-items: center; gap: 10px; border: 1px solid #d6d3d1; border-radius: 8px; padding: 12px; cursor: pointer;}
.radio-cards label:has(input:checked) { border-color: #059669; background: #ecfdf5;}Ejemplo completo con un backend de formularios alojado
<form action="https://api.formsfort.com/submit" method="POST"> <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY" /> <input type="hidden" name="subject" value="New project inquiry" />
<label for="email">Email</label> <input type="email" id="email" name="email" required />
<fieldset> <legend>What do you need?</legend> <label><input type="radio" name="need" value="website" required /> Website</label> <label><input type="radio" name="need" value="automation" /> Automation</label> <label><input type="radio" name="need" value="support" /> Support</label> </fieldset>
<fieldset> <legend>Budget range</legend> <label><input type="radio" name="budget" value="under-1000" required /> Under $1,000</label> <label><input type="radio" name="budget" value="1000-5000" /> $1,000 to $5,000</label> <label><input type="radio" name="budget" value="5000-plus" /> $5,000+</label> </fieldset>
<textarea name="message" rows="5" placeholder="Add context"></textarea> <input type="checkbox" name="botcheck" style="display:none" />
<button type="submit">Send inquiry</button></form>Esta versión proporciona valores normalizados al backend, proporciona a los usuarios etiquetas legibles y mantiene el formulario utilizable sin JavaScript.
Guías relacionadas
Para un punto de partida más amplio, consulte Ejemplos de formularios HTML página. Si necesita respuestas de varias líneas, use Guía del área de texto HTML. Para conocer los patrones de validación generales, lea Guía de validación de formularios HTML.
Preguntas frecuentes
¿Cómo agrupo botones de opción en HTML?
Asigne a cada opción del mismo grupo de opciones el mismo atributo de nombre. Luego, el navegador permite solo un valor seleccionado para ese campo.
¿Los botones de opción necesitan un atributo de valor?
Sí. El atributo de valor es lo que recibe el backend de su formulario cuando se selecciona esa opción de radio. Sin un valor, los datos enviados son más difíciles de entender.
¿Cómo hago para que se requiera un grupo de radio?
Agregar requerido a al menos una entrada de radio en el grupo. El navegador requerirá que el visitante elija una opción antes de enviarla.
¿Los botones de radio deben usar conjunto de campos y leyenda?
Sí para la mayoría de las opciones agrupadas. El conjunto de campos y la leyenda brindan a los lectores de pantalla el contexto de la pregunta antes de cada opción de radio.
Comience gratis
¿Listo para agregar formularios a su sitio estático?
No se requiere backend. Apunte su formulario HTML a FormsFort y comience a recibir envíos en minutos.