Eu tenho um select
que mostra inicialmente Selecionar idioma até que o usuário selecione um idioma. Quando o usuário abre a seleção, não quero mostrar uma opção Selecionar idioma , porque não é uma opção real.
Como posso conseguir isso?
fonte
Eu tenho um select
que mostra inicialmente Selecionar idioma até que o usuário selecione um idioma. Quando o usuário abre a seleção, não quero mostrar uma opção Selecionar idioma , porque não é uma opção real.
Como posso conseguir isso?
A solução de Kyle funcionou perfeitamente bem para mim, então fiz minha pesquisa para evitar Js e CSS, mas apenas permanecendo com HTML. Adicionar um valor de selected
ao item que queremos que apareça como cabeçalho força-o a ser mostrado em primeiro lugar como um espaço reservado. Algo como:
<option selected disabled>Choose here</option>
A marcação completa deve seguir estas linhas:
<select>
<option selected disabled>Choose here</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
<option value="4">Four</option>
<option value="5">Five</option>
</select>
Você pode dar uma olhada neste violino e aqui está o resultado:
Se você não quiser que o tipo de texto de espaço reservado apareça listado nas opções assim que um usuário clicar na caixa de seleção, basta adicionar o hidden
atributo desta forma:
<select>
<option selected disabled hidden>Choose here</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
<option value="4">Four</option>
<option value="5">Five</option>
</select>
Verifique o violino aqui e a imagem abaixo.
hidden
atributo , usado na resposta acima, é um atributo que pode ser definido em qualquer elemento HTML e geralmente (mas não necessariamente) implementado para ser equivalente à configuraçãodisplay: none
com CSS.hidden
de umoption
em umselect
não funciona no Safari, em ambos iOS ou Mac. Essa resposta, portanto, oferece suporte apenas parcial ao navegador.Aqui está a solução:
fonte
selected="true"
é inválido. Em vez disso, useselected="selected"
em (X) HTML ou apenasselected
em HTML. Parece que você confundiuselected
atributo comselected
propriedade, que é alterado assim:myOption.selected = true;
oumyOption.selected = false;
hidden
(que é "normalmente implementado em CSS" usando dedisplay: none
qualquer maneira), usandodisplay: none
em umoption
não funciona no Safari; a opção ainda aparece.A maneira adequada e semântica é usar uma opção de marcador de posição :
option
elemento como o primeiro filho doselect
value
= ""
para issooption
option
required
atributo aoselect
Isso forçará o usuário a selecionar outra opção para poder enviar o formulário, e os navegadores devem processar o
option
conforme desejado:No entanto, a maioria dos navegadores o processará normalmente
option
. Portanto, teremos que consertá-lo manualmente, adicionando o seguinte aooption
:selected
atributo, para torná-lo selecionado por padrãodisabled
atributo, para torná-lo não selecionável pelo usuáriodisplay: none
, para ocultá-lo da lista de valoresfonte
hidden
atributo à tag de opção de espaço reservado em vez dedisplay: none
parecer que a maioria dos navegadores móveis ignora odisplay: none
atributo CSS e é ainda mais semanticamente correto na minha opinião.hidden
geralmente é implementado comodisplay: none
nos bastidores (e a especificação sugere explicitamente isso como uma implementação "típica"). Como tal, ficaria surpreso se houvesse algum navegador - móvel ou outro - quehidden
funcionasse, masdisplay: none
não funcionasse. Você pode fornecer algum exemplo?Como você não pode usar marcadores de posição atribuídos para
select
tags, não acredito que haja alguma maneira de fazer exatamente o que você está pedindo com HTML / CSS puro. Você pode, no entanto, fazer algo assim:"Selecionar idioma" aparecerá no menu suspenso, mas uma vez que outra opção for selecionada, não será possível selecioná-la novamente.
Espero que ajude.
fonte
Experimente isto:
No CSS:
fonte
Eu tenho uma solução com um intervalo exibido acima do select até que uma seleção seja feita. O intervalo exibe a mensagem padrão e, portanto, não está na lista de proposições:
HTML:
CSS:
Javascript (com JQuery):
Eu fiz um jsfiddle para demonstração . Testado com Firefox e IE8.
fonte
span
usarlegend
e isso seria perfeito oulabel
pointer-events: none
em seu intervalo para permitir a passagem de cliques para selecionar.você pode, é claro, mover o css para um arquivo css se quiser e colocar um script para capturar o
esc
botão para selecionar o desativado novamente. Ao contrário das outras respostas semelhantes que coloqueivalue=""
, se você enviar o (s) valor (es) da sua lista de seleção com um formulário, ela não conterá "escolheu algo". Em asp.net mvc 5 enviado como json compilado comvar obj = { prop:$('#ddl').val(),...};
eJSON.stringify(obj);
o valor de prop será nulo.fonte
Op1:
Op2:
fonte