Estoy desarrollando un teclado táctil para un proyecto y me encuentro con este problema que no he podido resolver de manera aceptable.
El problema principal es cuando escribo un decimal en el teclado táctil en un campo numérico, la entrada se borra porque cuando configuro el texto a través de JavaScript: htmlinputelement.value = "161."
Recibo el siguiente error: The specified value "161." cannot be parsed, or is out of range.
He visto algunas preguntas similares ( el valor especificado no se puede analizar o está fuera de rango cuando se usa el canal numérico , el valor especificado "." no se puede analizar o está fuera de rango , y algunos otros)
El problema se resuelve si cambié el tipo de entrada de 'número' a 'texto'. Pero hacer esto abre otros problemas. Algunos de los campos de entrada usan la propiedad de paso y tenemos otra validación de entrada que no se puede usar si el tipo no es 'número'.
Entonces mis preguntas son
1.
sin problemas, pero cuando lo configuro mediante programación, analiza el valor y falla.Editar: mi solución más reciente que parece crear la menor cantidad de casos extremos/otros problemas es cambiar temporalmente el tipo de entrada a 'texto' para permitir la visualización decimal, luego cambiar el tipo de nuevo a número después de la siguiente entrada. ¡Déjenme saber sus pensamientos sobre esto!
Puede usar parseFloat()
(o incluso parseFloat().toString()
si realmente lo desea).
Es un poco más largo que un +"0"
, pero no es necesario que verifique la presencia de .
.
function doTest(event){ document.getElementById("input").value=parseFloat(event.target.innerText); }
<input type="number" id="input"><br> <button onclick="doTest(event)">1</button> <button onclick="doTest(event)">2.</button> <button onclick="doTest(event)">.3</button> <button onclick="doTest(event)">4.5</button>