Eu tenho o seguinte elemento de entrada html5:
<input type="number">
Por que essa entrada permite que o caractere 'e' seja inserido no campo de entrada? Nenhum outro caractere do alfabeto pode ser inserido (conforme o esperado)
Usando chrome v. 44.0.2403.107
Para ver o que quero dizer: http://www.w3schools.com/html/tryit.asp?filename=tryhtml_input_number
.
várias vezes em alguns navegadores.Respostas:
Porque é exatamente assim que a especificação diz que ele deve funcionar. A entrada de número pode aceitar números de ponto flutuante , incluindo símbolos negativos e o caractere
e
ouE
(onde o expoente é o número após oe
ouE
):fonte
e
é útil para condensar grandes números que, de outra forma, seriam tediosos de digitar. Como um exemplo trivial,2e2 = 2*10^2 = 200
e
significa expoente.Podemos torná-lo tão simples como abaixo
Resposta atualizada
podemos torná-lo ainda mais simples, como sugere o @ 88 MPG
fonte
return event.keyCode !== 69
, pois evita um operador ternário desnecessário. Também não recomendaria inlining.e
ouE
no campo emboraO tipo de número de entrada HTML permite "e / E" porque "e" significa exponencial, que é um símbolo numérico.
O exemplo 200000 também pode ser escrito como 2e5. Espero que isso ajude, obrigado pela pergunta.
fonte
A melhor maneira de forçar o uso de um número composto apenas por dígitos:
isso evita 'e', '-', '+', '.' ... todos os caracteres que não são números!
Para permitir apenas teclas numéricas:
mas aceite "Backspace" (keyCode: 8) e "Delete" (keyCode: 46) ...
fonte
fonte
Para ocultar a letra
e
e o sinal de menos,-
basta:fonte
Usando angular, você pode fazer isso para restringir a entrada de e, +, -, E
fonte
Angular; com aviso reprovado IDE keyCode
Funcionalmente o mesmo que a resposta de rinku, mas com a prevenção de aviso de IDE
fonte