Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Wellington09

[Resolvido] Bug nos campos input type="number" dos browse

Recommended Posts

sempre utilizei

<input name="valor" type="text">

para campos NUMERIC(18,2)

porem hj resolvi fazer um teste com campos NUMERIC(18,2) em tags

<input name="valor" type="number">

do HTML5

numeric 18, 2 no caso seria 15 caracteres antes da virgula + a vírgula + as duas casas decimais que vem após a vírgula, que no total daria 18 correto ? por isso (18,2)

 

Se eu estiver errado alguem me corrija , pois meu forte é design, seguindo o exemplo acima então o valor maximo que eu poderia enserir no banco é 999999999999999.99 ou seja 15 caracteres(quinze vzs o numero 9) + virgula(,) + 2 caracteres(duas vzs o numero 9)...continuando

 

fazendo o teste no CHROME e no OPERA percebi que se eu digitar manualmente 15 vzs o numero 9 na

<input name="valor" type="number">

e depois tentar diminuir ou aumentar o valor atraves das setas para CIMA e para BAIXO da tag

<input name="valor" type="number">

o valor não se altera, mesmo que eu tenha os seguintes atributos na tag input.

<input max="999999999999999" min="0" name="valor" step="0.01" type="number">

seria isto um BUG nos navegadores em cima do componente ?

<input name="valor" type="number">

ou esta tag com atributo type="number" não seria apropriado para campos NUMERIC(18,2) e sim apenas para campos INTEGER

alguem sabe algo sobre isso ?

lembrando que eu sei que o HTML5 não esta finalizado , e que eu criei apenas este post para saber a opinião das pessoas , ou se alguem ja passou por isso e teve uma solução

Compartilhar este post


Link para o post
Compartilhar em outros sites

matematicamente, 999999999999999 é menor que 999999999999999.01

 

Se o seu valor máximo é 999999999999999, o comportamento é o esperado.

 

O valor de max deve ser 999999999999999.99

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ea *Evandro* beleza cara ?

 

então... mas o valor fica fixo no campo, ele nem aumenta e nem diminui, acredito que você não tenha feito um teste e deva ter reparado apenas no atributo max com os valores 9 que eu digitei.

 

faz um teste ai para você entender o que eu quis dizer.

Acredito eu, que mesmo colocando o valor que você informou com casas decimais no atributo MAX 999999999999999.01, o campo mesmo assim não ira funcionar , pois na verdade com o atributo ou sem ele o valor fica travado no componente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

acredito que você não tenha feito um teste e deva ter reparado apenas no atributo max com os valores 9 que eu digitei.

 

<input type="number" max="999999999999999.99" step="0.01" />

 

2012-11-06-161717_1366x768_scrot.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

com o valor 999.99 no atributo max ele funciona mesmo, mas com o valor max="999999999999999.99" ele não funciona é isso que eu estou tentando dizer, mas mesmo tendo ou não tendo este atributo na tag input ele não ira funcionar o valor ira ficar travado.

 

EX:

se você tiver a seguinte input

<input type="number" step="0.01" size="30" />

e digita no teclado 999999999999999.98 quinze 9 - um ponto(.) - um 9 e um 8 e depois vai na seta para cima da tag input number o valor que ira aparecer pra você será o 1000000000000000 se apertar a seta para cima novamente o valor será agora 1E+15 se apertar a seta para baixo o valor sera 1000000000000000 se clicar na seta para baixo novamente para diminuir o valor ele ira ficar travado no 1000000000000000

 

 

Agora faz este teste do segundo exemplo

 

<input type="number" max="999999999999999.99" step="0.01" size="30" />

e digita no teclado 999999999999999.98 quinze 9 - um ponto(.) - um 9 e um 8 e depois vai na seta para cima da tag input number o valor que ira aparecer pra você será o 1000000000000000 se apertar a seta para cima novamente o valor ainda sera 1000000000000000 e não 1E+15 como no exemplo acima, pois agora tem o atributo max="999999999999999.99"

e se você apertar a seta para baixo o valor ainda sera o 1000000000000000

 

 

acredito eu que o valor deveria parar no 999999999999999.99 e não pular para o 1000000000000000

 

então Evandro eu percebi que o atributo max só funciona até treze noves

 

ex:

max="9999999999999.99"

se você usar catorze 9 ele não ira funcionar mais

 

 

max="999999999999999.99" --> não funciona

max="99999999999999.99" --> não funciona

max="9999999999999.99" --> funciona

max="999999999999.99" --> funciona

max="99999999999.99" --> funciona

Compartilhar este post


Link para o post
Compartilhar em outros sites

O E que aparece no final é a notação numérica científica.

 

A real funcionalidade de se informar um atributo max é no momento da validação.

 

se você fizer

<input type="number" max="2" min="1" step="0.5" value="1" />

 

verá que o input funciona normalmente, como se espera - ainda que, na verdade se trate de um range.

 

Contudo, é possível colocar o cursor ali dentro e digitar

 

999999999999999999999999999999999999999999999999999999999999999999999999

 

 

Quando clicarmos em qualquer setinha, o valor não será acrescido/decrescido, mas teremos o mesmo valor em notação científica.

 

Tentando submeter o formulário, o mesmo deverá informar que é inválido.

 

Uma alternativa é tentar contornar o problema com maxlength. Não testei.

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi...não cheguei a testar o maxlenght no OPERA, só cheguei a testar no CHROME e ela não funciona não

 

maxlength funciona até no IE 6. Veja se não é erro de digitação, como no seu último post (o H vem no final).

 

O ponto negativo é que você tem que contabilizar da mesma forma que faz no MySQL. Se você aceita de 0 a 99.99, o maxlength deve ser de 5, o que permite que o cara digite 99999.

 

Você poderia, ainda validar pelo atributo pattern que vai solicitar uma expressão regular. De qualquer forma, toda e qualquer validação do campo do formulário só será executada quando o usuário tentar submetê-lo.

 

Se desejar um mascaramento em tempo real, sugiro que utilize máscaras com JavaScript.

Compartilhar este post


Link para o post
Compartilhar em outros sites

não não... o que eu quis dizer é que o maxlength não trava em campos number no chrome ex:

 

maxlength="5"

 

ele deixa eu digitar bem mais que 5, mas nas text funciona... foi isso que eu quis dizer , acho que me expressei mau.

 

mas realmente digitei errado acima.

 

e pattern é show de bola mesmo, estou utilizando em meus projetos esse atributo é de grande utilidade

 

vlw o papo ai Evandro acho q não tem mais o que falar, você deu uma esclarecida legal e ainda me mostrou sobre notação numérica científica eu nem sabia disso

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.