• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

311
Views
¿Cómo omitir el análisis de valor de HTMLInputElement al configurar el valor de entrada de número a través de JavaScript?

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. ¿Cómo puedo escribir (usando un teclado USB) un decimal en un campo de entrada de número de tipo sin este problema? (¿Cómo maneja el campo de entrada HTML los cambios de valor?). Pregunto esto porque puedo escribir 1. sin problemas, pero cuando lo configuro mediante programación, analiza el valor y falla.
  2. ¿Es posible omitir el análisis de valor de HTMLInputElement al configurarlo?

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!

about 3 years ago · Juan Pablo Isaza
1 answers
Answer question

0

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>

about 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error