Existe uma maneira consistente entre os navegadores para ocultar as novas caixas de rotação que alguns navegadores (como o Chrome) processam para entrada HTML do número do tipo? Estou procurando um método CSS ou JavaScript para impedir que as setas para cima / para baixo apareçam.
<input id="test" type="number">
<input type="number" min="4" max="8" />
Chrome e vendo um campo de entrada típico com as setas para cima e para baixo ao lado.<input type="number" pattern="[0-9]*" inputmode="numeric">
. Mais informações: stackoverflow.com/a/31619311/806956<input type="text" placeholder="number (digits only)" pattern="[0-9]+" class="validate number-validation" ... >
e usar o jQuery Validati ou similar para lidar com a validação. Não testei essa abordagem, e é por isso que é um comentário, e não uma resposta.Respostas:
Esse CSS oculta efetivamente o botão de rotação dos navegadores de kit da web (foi testado no Chrome 7.0.517.44 e no Safari Versão 5.0.2 (6533.18.5)):
Você sempre pode usar o inspetor (webkit, possivelmente Firebug for Firefox) para procurar propriedades CSS correspondentes aos elementos nos quais está interessado, procurar por pseudo-elementos. Esta imagem mostra resultados para um elemento de entrada type = "number":
fonte
display: none;
como a única coisa dentro do seletortype=number
se você precisar ocultar essas setas. Por exemplo, atualmente eles ainda serão exibidos no Opera e começarão a ser exibidos no Firefox, IE etc. quando implementarem esse tipo de entrada.max=
emin=
em<input>
soluções alternativas, comotype="text"
HTML5 não válidas. As pessoas também mencionam Opera, incluindo esses spinners. Existe uma solução para o Opera semelhante ao Safari / Chrome?input::-webkit-clear-button
o botão XO Firefox 29 atualmente adiciona suporte para elementos numéricos, então aqui está um trecho para ocultar os giradores em navegadores baseados em webkit e moz:
fonte
Resposta curta:
Resposta mais longa:
Para adicionar à resposta existente ...
Raposa de fogo:
Nas versões atuais do Firefox, o valor padrão (agente do usuário) da
-moz-appearance
propriedade nesses elementos énumber-input
. Alterar isso para o valortextfield
efetivamente remove o botão giratório.Em alguns casos, convém que o botão giratório fique oculto inicialmente e apareça em foco / foco. (Este é atualmente o comportamento padrão no Chrome). Nesse caso, você pode usar o seguinte:
Cromada:
Nas versões atuais do Chrome, o valor padrão (agente do usuário) da
-webkit-appearance
propriedade nesses elementos já étextfield
. Para remover o controle giratório, o-webkit-appearance
valor da propriedade precisa ser alterado paranone
nas::-webkit-outer-spin-button
/::-webkit-inner-spin-button
pseudo classes (é-webkit-appearance: inner-spin-button
por padrão).Vale ressaltar que
margin: 0
é usado para remover a margem nos antigos versões antigas do Chrome.Atualmente, ao escrever isso, aqui está o estilo padrão do agente do usuário na pseudo classe 'inner-spin-button':
fonte
De acordo com o guia de codificação da experiência do usuário da Apple para o Safari móvel , você pode usar o seguinte para exibir um teclado numérico no navegador do iPhone:
Um
pattern
de\d*
também irá funcionar.fonte
Tente usar em seu
input type="tel"
lugar. Ele exibe um teclado com números e não mostra caixas de rolagem. Não requer JavaScript, CSS, plugins ou qualquer outra coisa.fonte
type=number
faz.Adicione apenas este css para remover o girador na entrada do número
fonte
input[type=number]{ -webkit-appearance }
deve ser suficiente para o chrome, mas é claro que você também precisa modificar os pseudo-elementos. alguma idéia do porquê ??Eu encontrei esse problema com um
input[type="datetime-local"]
, que é semelhante a esse problema.E eu encontrei uma maneira de superar esse tipo de problema.
Primeiro, você deve ativar o recurso de raiz de sombra do chrome em "DevTools -> Configurações -> Geral -> Elementos -> Mostrar DOM do agente do usuário"
Então você pode ver todos os elementos DOM sombreados , por exemplo, para
<input type="number">
, o elemento completo com DOM sombreado é:E de acordo com essas informações, você pode criar um CSS para ocultar elementos indesejados, como disse o @Josh.
fonte
Não é o que você pediu, mas faço isso por causa de um bug de foco no WebKit com caixas de rotação:
Pode dar uma idéia para ajudar com o que você precisa.
fonte
Esta é uma resposta melhor que eu gostaria de sugerir sobre o mouse e sem o mouse
fonte
margin: 0
realiza? Além disso, osspin-button
pseudoelementos não parecem ser acionadoshover
em navegadores mais recentes?Para fazer isso funcionar no Safari, achei que adicionar! Important ao ajuste do kit da web força o botão de rotação a ficar oculto.
Ainda estou tendo problemas para encontrar uma solução para o Opera.
fonte
No Firefox para Ubuntu, apenas usando
fez o truque para mim.
Adicionando
Me levaria a
toda vez que eu tentava. O mesmo para o botão de rotação interna.
fonte
-webkit-*
é para Chrome,-moz-*
é para mozilla firefox. Por isso não funcionou para você.fonte
Talvez altere a entrada de número com javascript para entrada de texto quando você não quiser um girador;
e pare o usuário digitando texto;
faça com que o javascript mude novamente, caso você queira um girador;
funcionou bem para os meus propósitos
fonte
Nos navegadores WebKit e Blink, e Todo o tipo de navegador, use o seguinte CSS:
fonte
webkit
? Ao responder a uma pergunta de nove anos com quatorze respostas existentes, é importante adicionar explicações sobre como e por que sua resposta funciona e mencionar que novo aspecto da pergunta ela responde.Eu precisava disso para funcionar
A linha extra de
appearance: none
era a chave para mim.fonte
Encontrei uma solução super simples usando
Isso é suportado na maioria dos navegadores: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inputmode
fonte