Estoy tratando de formatear los valores escritos por el usuario en tiempo real, estoy haciendo esto para algunos tipos de datos, pero el único que no puedo hacer que funcione es con moneda (número). Basado en mis otros tipos de datos, estoy tratando de resolverlo con el siguiente código:
<input type="number" onkeypress="return parseFloat(this.value).toFixed(2).toLocaleString() " /> <input type="number" onkeypress="something(this.value);" /> function something(val) { return parseFloat(val).toFixed(2).toLocaleString(); } function something(val) { return parseFloat(val).toFixed(2).toLocaleString(); } <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input type="number" onkeypress="return parseFloat(this.value).toFixed(2).toLocaleString() " /> <input type="number" onkeypress="something(this.value);" />Lo que estoy tratando de hacer es que, por ejemplo: si mi usuario intenta escribir 25999.84125, cambie el valor de entrada a 25999.84 pero cualquiera de mis ejemplos de código está funcionando.
¿Como puedo resolver esto? Preferiré mantener la función event + dentro de la etiqueta de entrada (ejemplo 1), pero si la solución es escribir una función personalizada, está bien. También estoy abierto a usar Regex.
Para cambiar el valor en tiempo real, no devuelva los datos en la función, ¡simplemente establezca el valor en la entrada! Además, no puede hacerlo exactamente en tiempo real con JS, debe usar la función onChange de esta manera:
function something(val, input) { document.getElementById(`input${input}`).value = parseFloat(val).toFixed(2).toLocaleString(); } <input id="input1" type="number" onChange="something(this.value, 1);" /> <input id="input2" type="number" onChange="something(this.value, 2);" />finalmente, si quieres hacerlo exactamente en tiempo real, usa Vue js