Tengo el siguiente elemento de entrada html5:
<input type="number">
¿Por qué esta entrada permite que se ingrese el carácter 'e' en el campo de entrada? No se puede ingresar ningún otro carácter del alfabeto (como se esperaba)
Usando Chrome v. 44.0.2403.107
Para ver a qué me refiero: http://www.w3schools.com/html/tryit.asp?filename=tryhtml_input_number
.
varias veces en algunos navegadores.Respuestas:
Porque así es exactamente como la especificación dice que debería funcionar. La entrada de número puede aceptar números de coma flotante , incluidos símbolos negativos y el carácter
e
oE
(donde el exponente es el número después dee
oE
):fuente
e
es útil para condensar grandes números que de otra manera serían tediosos de escribir. Como un ejemplo trivial,2e2 = 2*10^2 = 200
e
significa Exponente.Podemos hacerlo tan simple como a continuación
Respuesta actualizada
podemos hacerlo aún más simple como @ 88 MPG sugiere
fuente
return event.keyCode !== 69
ya que evita un operador ternario innecesario. Tampoco recomendaría en línea.e
oE
en el campo, aunqueEl tipo de número de entrada HTML permite "e / E" porque "e" significa exponencial, que es un símbolo numérico.
El ejemplo 200000 también se puede escribir como 2e5. Espero que esto ayude, gracias por la pregunta.
fuente
La mejor manera de forzar el uso de un número compuesto solo por dígitos:
esto evita 'e', '-', '+', '.' ... todos los personajes que no son números!
Para permitir solo las teclas numéricas:
pero acepte "Retroceso" (código clave: 8) y "Eliminar" (código clave: 46) ...
fuente
fuente
Para ocultar tanto la letra
e
como el signo menos-
solo ve por:fuente
Usando angular, puede hacer esto para restringir la entrada de e, +, -, E
fuente
Angular; con IDE keyCode advertencia en desuso
Funcionalmente igual que la respuesta de rinku pero con prevención de advertencia IDE
fuente