2010-06-22 15 views
17

estoy usando uno de los nuevos tipos de entrada HTML5, number:Obtener el valor de un número de entrada HTML5

<input type="number" /> 

En Opera, que es el único navegador de escritorio que sé de lo que actualmente lo reconoce, se la hace como tal:

enter image description here

El problema que estoy enfrentando es uno de validación. Si un usuario escribe algo no válido en el campo, por ejemplo: "abc", el valor devuelto por myInput.value es una cadena vacía. Esto hace que sea imposible saber si el usuario dejó el campo en blanco, o si ingresaron algunos datos incorrectos. ¿Hay alguna forma de obtener el valor real del campo?

Respuesta

13

El proyecto de HTML5 define: algoritmo de sanitización

El valor es el siguiente: Si el valor del elemento no es un número de coma flotante válido, luego otra vez en la cadena vacía en su lugar.

Reference1

supongo que tendría el uso de un valor predeterminado de "0" para asegurarse de que el campo se deja intacto o si ha introducido algo inválido, ya que no parece haber ninguna manera obvia para diferenciar el dos.

Después de leer las especificaciones de validación y algunas pruebas (en Opera 10.54) llegué a la conclusión de que:

<input id="email" type="email" value="blah"> 
document.getElementById("email").validity.typeMismatch // True 

no funciona en <input type="number">. No estoy seguro si se supone que debe hacerlo, o si es un trabajo en progreso. Sin embargo, la propiedad existe, aunque siempre devuelve False.

Read more2

También puede establecer un método de validación personalizada Reference3

+2

bolas OH. Dejar el campo en blanco debe ser un estado válido para mis propósitos (y es diferente a ingresar a 0 ...) Gracias de todos modos. – nickf

+0

Esa especificación dice "Si la aplicación de las reglas para analizar valores de números de coma flotante para la entrada genera un error, devuelve un error; de lo contrario, devuelve el número resultante". ¿Crees que habría alguna forma de detectar ese error? – nickf

+0

Ver respuesta actualizada. – Daniel

Cuestiones relacionadas