Eu tenho um requisito muito estranho, no qual sou obrigado a não ter nenhuma opção selecionada por padrão no menu suspenso em HTML. Contudo,
Eu não posso usar isso,
<select>
<option></option>
<option>Option 1</option>
<option>Option 2</option>
<option>Option 3</option>
</select>
Porque, para isso, terei que fazer a validação para lidar com a primeira opção. Alguém pode me ajudar a atingir esse objetivo sem incluir a primeira opção como parte da tag select?
Respostas:
Talvez isso seja útil
-- select an option --
Será exibido por padrão. Mas se você escolher uma opção, não poderá selecioná-la novamente.Você também pode ocultá-lo usando adicionando um
option
<option style="display:none">
para que não apareça mais na lista.
opção 2
Se você não deseja escrever CSS e espera o mesmo comportamento da solução acima, basta usar:
<option hidden disabled selected value> -- select an option -- </option>
fonte
<option hidden disabled selected value> -- select an option -- </option>
Você pode usar o Javascript para conseguir isso. Tente o seguinte código:
HTML
JS
ou JQuery
fonte
required
atributo noselect
elemento e enviar sem selecionar uma opção, a validação do formulário falhará e informará, você deve fazer uma seleção. Portanto, eu realmente gosto dessa abordagem. (Pelo menos testado no Chrome)Hoje (25-02-2015)
Este é o HTML5 válido e envia um espaço em branco (não um espaço) ao servidor:
Validade verificada em http://validator.w3.org/check
Comportamento verificado com Win7 (IE11 IE10 IE9 IE8 FF35 Safari5.1) Ubuntu14.10 (Chrome40, FF35) OSX_Yosemite (Safari8, Chrome40) Android (Samsung-Galaxy-S5)
O seguinte também passa na validação hoje , mas também passa algum tipo de caractere de espaço no servidor da maioria dos navegadores (provavelmente não desejável) e um espaço em branco nos outros (Chrome40 / Linux passa um espaço em branco):
Anteriormente (02/08/2013)
De acordo com minhas anotações, a entidade sem espaço de quebra dentro das tags de opção mostradas acima produziu o seguinte erro em 2013:
Naquele momento, um espaço regular era XHTML4 válido e enviava um espaço em branco (não um espaço) ao servidor de todos os navegadores:
Futuro
Ficaria feliz se a especificação fosse atualizada para permitir explicitamente uma opção em branco. De preferência, usando a sintaxe mais breve. Qualquer um dos seguintes seria ótimo:
Arquivo de teste
fonte
Basta colocar "oculto" na opção que você deseja ocultar na lista suspensa.
fonte
Solução que funciona usando apenas CSS:
A: CSS embutido
B: Folha de estilos CSS
Se você tiver um arquivo CSS em mãos, poderá segmentar o primeiro
option
usando:fonte
Isso deve ajudar:
https://www.w3schools.com/tags/att_select_required.asp
fonte
Você pode evitar a validação personalizada neste caso.
fonte
Apenas uma pequena observação:
alguns navegadores Safari parecem não respeitar nem o atributo "oculto" nem a configuração de estilo "display: none" (testado com o Safari 12.1 no MacOS 10.12.6). Sem um texto de espaço reservado explícito, esses navegadores simplesmente mostram uma primeira linha vazia na lista de opções. Portanto, pode ser útil sempre fornecer algum texto explicativo para esta entrada "fictícia":
Graças ao atributo "disabled", ele não será selecionado ativamente.
fonte
Entendo o que você está tentando fazer. A melhor e a maneira mais bem-sucedida é:
fonte
Achei muito interessante, porque experimentei a mesma coisa há pouco tempo. No entanto, me deparei com um exemplo na Internet sobre a solução a esse respeito.
Sem mais delongas, veja o fragmento de código abaixo:
Com isso, ele permanecerá inviável, mas selecionável a qualquer momento. Mais conveniência para a interface do usuário e excelente para a experiência do usuário.
Bem, isso é tudo, espero que ajude. Felicidades!
fonte
Não há solução HTML. Pela especificação do HTML 4.01, o comportamento do navegador é indefinido se nenhum dos
option
elementos tiver oselected
atributo, e o que os navegadores fazem na prática é que eles fazem a primeira opção pré-selecionada.Como solução alternativa, você pode substituir o
select
elemento por um conjunto deinput type=radio
elementos (com o mesmoname
atributo). Isso cria um controle do mesmo tipo, embora com aparência e interface de usuário diferentes. Se nenhum dosinput type=radio
elementos tiver ochecked
atributo, nenhum deles será selecionado inicialmente na maioria dos navegadores modernos.fonte
Estou usando o framework Laravel 5 e a resposta do @Gambi também funcionou para mim, mas com algumas alterações no meu projeto.
Eu tenho os valores das opções em uma tabela de banco de dados e os uso com uma instrução foreach. Mas antes da declaração, adicionei uma opção com as configurações sugeridas pelo @Gambit e funcionou.
Aqui meu exemplo:
Espero que isso ajude alguém também. Mantenha o bom trabalho!
fonte
Tente o seguinte:
A primeira opção no menu suspenso ficaria em branco.
fonte
Para exibir , selecione um valor no menu suspenso e oculte-o após a seleção de algum valor. por favor use o código abaixo.
também suportará a validação necessária.
fonte
Se você estiver usando Angular (2+), (ou qualquer outra estrutura), poderá adicionar alguma lógica. A lógica seria: exibir apenas uma opção vazia se o usuário ainda não tiver selecionado nenhuma outra. Então, depois que o usuário selecionou uma opção, a opção vazia desaparece.
Para Angular (9), seria algo assim:
fonte
Tente o seguinte:
Valida em HTML5. Funciona com o
required
atributo no elemento select. Pode ser re-selecionado. Funciona no Google Chrome 45, Internet Explorer 11, Edge, Firefox 41.fonte