Neste artigo vamos aprender como aplicar readonly em um select, ou seja, deixá-lo impossibilitado de ter suas opções selecionadas.
Fala programador(a), beleza? Bora aprender coisa nova!
O atributo readonly não funciona no select por si só, precisamos fazer mais alguns ajustes para que o comportamento seja o que queremos
Quer se especializar em Desenvolvimento Web? Veja o nosso catálogo de cursos.
Então vamos construir uma estrutura HTML de exemplo:
<!DOCTYPE html>
<html>
<head>
    <title>Como deixar readonly no select</title>
</head>
<body>	
    <h2>Selecione uma opção</h2>
    <form>
        <select>
            <option>Opção 1</option>
            <option>Opção 2</option>
            <option>Opção 3</option>
        </select>
    </form>
</body>
</html>E como aparece na tela:
Certo, agora o input está habilitado, vamos as alterações necessárias para deixar ele como um readonly:
<select tabindex="-1" aria-disabled="true">
Primeiramente no HTML, vamos adicionar tabindex=”-1″, não permitindo os usuários acessarem o campo via tecla tab
Depois aria-disable=”true”, uma forma de informar que este campo está desabilitado para os leitores de tela, pensando em acessibilidade
Agora no CSS:
select {
  background: #EEE; 
  pointer-events: none;
  touch-action: none;
}
Aqui incluimos um background cinza, para dar o aspecto de um campo readonly, apenas como efeito visual
Depois removemos os efeitos de click e de touch (celular), com o pointer-events: none e o touch-action: none
Pronto, nosso select readonly está pronto, veja como ficou:
Lembrando que devem existir mais formas de aplicar readonly em um select, porém esta é bem simples e efetiva
E principalmente sem gambiarras, utilizando somente recursos nativos das linguagens HTML e CSS
Conclusão
Neste artigo vimos como deixar um select como um input readonly
Foi necessário alterar um pouco o HTML por questões de acessibilidade e também da possibilidade de acessar com o tab
Depois com CSS tiramos os eventos de click e touch, além de deixarmos o elemento com um fundo cinza claro
Confira também nosso catálogo de cursos gratuitos, com aulas semanais no YouTube
 
 
 
 
