我正在尝试格式化表单输入中的数字以仅显示两位小数但仍保留(保存)原始值。我需要这样做,因为如果我简单地对数字进行舍入并保存它将会有不正确的值。此外,客户最多只想看到两位小数。
我尝试使用此:https://igorescobar.github.io/jQuery-Mask-Plugin/和此:https://github.com/RobinHerbots/Inputmask但这两个插件都会忽略原始值并将其格式化为“* .00”。例:134.277将变为1342.77,这是非常错误的。
我也试过了,但不幸的是它不起作用:http://csspre.com/rounding-numbers/
是否可以仅对显示的数字进行舍入?
答案 0 :(得分:1)
使用toFixed
进行舍入
function doCustomRounding(obj){
$("#"+obj.id).data("value", obj.value)
$("#"+obj.id).val(Number(obj.value).toFixed(2));
}
function getOriginalValue(id){
alert("original Value: "+$("#"+id).data("value"))
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
<input id="formattedNo" value = "0" type="number" onchange="doCustomRounding(this)" data-value="0" /><button onclick="getOriginalValue('formattedNo')">Get Original Value</button>
&#13;
参见上面的工作代码段。输入带小数位的数字,然后从文本框中删除焦点。
修改强>
我使用data属性存储原始值,以避免必须存储每个新输入元素的变量
答案 1 :(得分:0)
打印值时,可以使用toFixed()方法。
toFixed()的文档:https://www.w3schools.com/jsref/jsref_tofixed.asp