Tengo un requisito muy extraño, en el que se me exige que no tenga ninguna opción seleccionada de forma predeterminada en el menú desplegable en HTML. Sin embargo,
No puedo usar esto
<select>
<option></option>
<option>Option 1</option>
<option>Option 2</option>
<option>Option 3</option>
</select>
Porque para esto tendré que hacer una validación para manejar la primera opción. ¿Alguien puede ayudarme a lograr este objetivo sin incluir realmente la primera opción como parte de la etiqueta select?
Respuestas:
Quizás esto sea útil
-- select an option --
Se mostrará por defecto. Pero si elige una opción, no podrá volver a seleccionarla.También puede ocultarlo usando agregando un vacío
option
<option style="display:none">
así que ya no aparecerá en la lista.
opcion 2
Si no desea escribir CSS y espera el mismo comportamiento de la solución anterior, simplemente use:
<option hidden disabled selected value> -- select an option -- </option>
fuente
<option hidden disabled selected value> -- select an option -- </option>
Podrías usar Javascript para lograr esto. Prueba el siguiente código:
HTML
JS
o JQuery
fuente
required
atributo en elselect
elemento y lo envía sin seleccionar una opción, la validación del formulario fallará y se lo indicará, debe hacer una selección. Por lo tanto, me gusta mucho este enfoque. (Al menos probado en Chrome)Hoy (25/02/2015)
Este es HTML5 válido y envía un espacio en blanco (no un espacio) al servidor:
Validez verificada en http://validator.w3.org/check
Comportamiento verificado con Win7 (IE11 IE10 IE9 IE8 FF35 Safari5.1) Ubuntu14.10 (Chrome40, FF35) OSX_Yosemite (Safari8, Chrome40) Android (Samsung-Galaxy-S5)
Lo siguiente también pasa la validación hoy , pero también pasa algún tipo de carácter de espacio al servidor de la mayoría de los navegadores (probablemente no deseable) y un espacio en blanco en otros (Chrome40 / Linux pasa un espacio en blanco):
Anteriormente (2013-08-02)
Según mis notas, la entidad que no se rompe el espacio dentro de las etiquetas de opción mostradas anteriormente produjo el siguiente error en 2013:
En ese momento, un espacio regular era XHTML4 válido y enviaba un espacio en blanco (no un espacio) al servidor desde cada navegador:
Futuro
Me alegraría si la especificación se actualizara para permitir explícitamente una opción en blanco. Preferiblemente usando la sintaxis más breve. Cualquiera de los siguientes sería genial:
Archivo de prueba
fuente
Simplemente ponga "oculto" en la opción que desea ocultar en la lista desplegable.
fuente
Solución que funciona solo usando CSS:
A: CSS en línea
B: hoja de estilo CSS
Si tiene un archivo CSS a mano, puede orientar el primero
option
usando:fuente
Esto debería ayudar:
https://www.w3schools.com/tags/att_select_required.asp
fuente
Puede evitar la validación personalizada en este caso.
fuente
Solo un pequeño comentario:
algunos navegadores Safari no parecen respetar ni el atributo "oculto" ni la configuración de estilo "display: none" (probado con Safari 12.1 en MacOS 10.12.6). Sin un texto de marcador de posición explícito, estos navegadores simplemente muestran una primera línea vacía en la lista de opciones. Por lo tanto, puede ser útil proporcionar siempre un texto explicativo para esta entrada "ficticia":
Gracias al atributo "deshabilitado", no se seleccionará activamente de todos modos.
fuente
Entiendo lo que estás tratando de hacer. La mejor y más exitosa forma es:
fuente
Lo encontré realmente interesante porque acabo de experimentar lo mismo no hace mucho tiempo. Sin embargo, encontré un ejemplo en Internet sobre la solución con respecto a esto.
Sin más preámbulos, vea el fragmento de código a continuación:
Con eso, no se podrá enviar pero se podrá seleccionar en cualquier momento. Más comodidad para la interfaz de usuario y excelente para la experiencia del usuario.
Bueno, eso es todo, espero que ayude. ¡Salud!
fuente
No hay una solución HTML. Según la especificación HTML 4.01, el comportamiento del navegador no está definido si ninguno de los
option
elementos tieneselected
atributo, y lo que hacen los navegadores en la práctica es que seleccionen la primera opción preseleccionada.Como solución alternativa, puede reemplazar el
select
elemento por un conjunto deinput type=radio
elementos (con el mismoname
atributo). Esto crea un control del mismo tipo, aunque con una apariencia e interfaz de usuario diferentes. Si ninguno de losinput type=radio
elementos tiene elchecked
atributo, ninguno de ellos se selecciona inicialmente en la mayoría de los navegadores modernos.fuente
Estoy usando el framework Laravel 5 y la respuesta de @Gambi también funcionó para mí, pero con algunos cambios para mi proyecto.
Tengo los valores de opción en una tabla de base de datos y los uso con una declaración foreach. Pero antes de la declaración, agregué una opción con la configuración sugerida de @Gambit y funcionó.
Aquí mi ejemplo:
Espero que esto ayude a alguien también. ¡Sigan con el buen trabajo!
fuente
Prueba esto:
La primera opción en el menú desplegable estaría en blanco.
fuente
Para mostrar , seleccione un valor en el menú desplegable y escóndelo después de seleccionar algún valor. por favor use el siguiente código.
También admitirá la validación requerida.
fuente
Si está utilizando Angular (2+), (o cualquier otro marco), podría agregar algo de lógica. La lógica sería: solo mostrar una opción vacía si el usuario aún no seleccionó ninguna otra. Entonces, después de que el usuario selecciona una opción, la opción vacía desaparece.
Para Angular (9) esto se vería así:
fuente
Prueba esto:
Valida en HTML5. Funciona con
required
atributo en el elemento seleccionado. Se puede volver a seleccionar. Funciona en Google Chrome 45, Internet Explorer 11, Edge, Firefox 41.fuente