Tengo este código que evita que el usuario ingrese pesos negativos en el cuadro de texto Peso.
<input type="number" min="0" oninput="this.value = !!this.value && Math.abs(this.value)>= 0 ? Math.abs(this.value) : null">El escenario 1 funciona bien: Entrada: 1.23 Salida 1.23
Escenario 2: Entrada: 0.05 Salida 5 (Me gustaría obtener 0.05)
Cuando ingreso números decimales como 0.04 o 0.05, obtengo 4 o 5. Me gustaría obtener los números decimales tal como están.
Simplemente use una expresión regular para eliminar todos los dígitos no numéricos.
string.replace(/[^0-9]/g, '')string.replace(/[^\d.-]/g, '') <div class="box-tricks"> <input type="number" min="0" oninput="this.value = this.value.replace(/[^0-9]/g, '')"> </div>Probablemente sea mejor usar onblur en lugar de oninput , ya que esto le dará al usuario la oportunidad de completar su entrada antes de que el controlador de eventos la "mutile". También cambié el tipo de entrada a "texto" ya que esto requerirá el punto decimal "." para ser ingresado, independientemente de cualquier configuración regional que pueda aplicarse a sus navegadores (o los de sus usuarios).
<input type="text" onblur="this.value = !!(+this.value) && Math.abs(+this.value)>= 0 ? Math.abs(+this.value).toFixed(2) : null;console.log(this.value)">