Estoy tratando de que un usuario ingrese su número en una etiqueta de entrada HTML y luego haga clic en un botón y genere un número fijo con dos puntos decimales. No puedo hacer que funcione a pesar de que he seguido ejemplos e incluso he copiado lo que hicieron en algunos puntos, no estoy seguro de lo que estoy haciendo mal. Soy bastante nuevo en JavaScript, así que no entiendo muy bien lo que estoy haciendo.
Html y su código JS están a continuación:
HTML:
<p> Input below to fix your number </p> <input id="input1" type="number" placeholder="number 1"> <button onclick="javascript:tofixed_method()">CLICK</button> <p> Your fixed number: <span id="answer"></span></p>JavaScript:
function tofixed_method() { var val1 = document.getElementById("input1").value; var val2 = val1.toFixed(2); document.getElementById("answer").innerHTML = val2; }¡Gracias!
document.getElementById("input1").value le da una cadena. Primero debe convertirlo en un número, usando parseInt por ejemplo:
function tofixed_method() { var val1 = document.getElementById("input1").value; var val2 = parseInt(val1).toFixed(2); document.getElementById("answer").innerHTML = val2; }Puede consultar la lógica de rc-input-number. Hay muchos factores a considerar.
// '1.' '1x' 'xx' '' => are not complete numbers function isNotCompleteNumber(num) { return ( isNaN(num) || num === '' || num === null || (num && num.toString().indexOf('.') === num.toString().length - 1) ); } function tofixed_method() { const input_value = document.getElementById('input1').value; const input_num = parseFloat(input_value, 10); document.getElementById('answer').innerHTML = isNotCompleteNumber(input_num) ? '' : input_num.toFixed(2); }