Existe um tipo de input float no HTML5?

De acordo com o html5.org , o atributo “value” do tipo de input “número”, se especificado e não vazio, deve ter um valor que seja um número de ponto flutuante válido. ”

No entanto, é simplesmente (na versão mais recente do Chrome, de qualquer forma), um controle “updown” com números inteiros, não flutuantes:

 

Existe um elemento de input de ponto flutuante nativo para HTML5, ou uma maneira de fazer o tipo de input de número funcionar com floats, não ints? Ou devo recorrer a um plugin jQuery UI?

O tipo de number tem um valor de step controlando quais números são válidos (junto com max e min ), cujo padrão é 1 . Este valor também é usado por implementações para os botões de passo (ou seja, pressionando para cima aumenta a cada step ).

Simplesmente mude este valor para o que for apropriado. Por dinheiro, provavelmente são esperadas duas casas decimais:

  

(Eu também defini min=0 se só pode ser positivo)

Se você preferir permitir qualquer número de casas decimais, você pode usar step="any" (embora para moedas, eu recomendaria manter o valor de 0.01 ). No Chrome & Firefox, os botões deslizantes aumentam / diminuem em 1 ao usar any . (graças à resposta de Michal Stefanow por apontar any e ver as especificações relevantes aqui )

Aqui está um playground mostrando como várias etapas afetam vários tipos de input:

 
Step 1 (default)
Step 0.01
Step any
Step 20
Step 60 (default)
Step 1
Step any
Step 0.001
Step 3600 (1 hour)
Step 86400 (1 day)
Step 70 (1 min, 10 sec)

Via: http://blog.isotoma.com/2012/03/html5-input-typenumber-and-decimalsfloats-in-chrome/

Mas e se você quiser que todos os números sejam válidos, números inteiros e decimais iguais? Nesse caso, defina a etapa como “qualquer”

  

Funciona para mim no Chrome, não testado em outros navegadores.

Baseado nesta resposta

  

Significado:

Código char:

  • 48-57 igual a 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
  • 0 é Backspace (caso contrário, é necessário atualizar a página no Firefox)
  • 46 é dot

&& é AND , || é operador OR .

se você tentar flutuar com vírgula:

  

Chromium e Firefox suportados (Linux X64) (outros navegadores que eu não existo)

você pode usar:

  

espero ajudar, considera

Eu faço isso

   

então, eu defino min em 0.4 e max em 0.7 com passo 0.01: 0.4, 0.41, 0,42 … 0.7

Você pode usar o atributo step para o número do tipo de input:

  

step="any" permitirá qualquer decimal.
step="1" não permitirá decimal.
step="0.5" permitirá 0.5; 1; 1,5; …
step="0.1" permitirá 0.1; 0,2; 0,3; 0,4; …

Acabei de ter o mesmo problema, e poderia consertá-lo apenas colocando uma vírgula e não um período / ponto final no número devido à localização em francês .

Então funciona com:

2 está OK

2,5 é OK

2.5 é KO (o número é considerado “ilegal” e você recebe um valor vazio).