删除敲除绑定中的小数的Javascript
Javascript removing decimals in knockout binding
我看到关于Javascript中的小数精度和显示有很多问题。问题是,我找到了一个解决方案,我认为这对我来说已经足够了
关键是,我正试图解析成一个字符串进行舍入,然后使用这样的表达式返回到数字。
return parseFloat(num.toFixed(2));
但在某些情况下,它并没有像预期的那样发挥作用。老实说,我不确定这是与我使用ko的方式有关,还是与我设置的用于解析的javascript代码有关。但我们假设,在下面的fiddle中,您在上部文本框中键入14.385,两个字段都将被正确取整,并显示正确的小数位数,但在不删除数字的情况下,您添加3333(即14.393333),上部的一个不会被取整。这只是一个例子,因为有一些奇怪的行为。
Yo可以在这里看到小提琴http://jsfiddle.net/RTexF/
感谢
编辑。我根据judgeja的指示添加代码(当你链接fiddle时,我不明白要求代码的原因,我现在明白了)
脚本
var decimalValue = 0.25;
function ViewModel() {
var self = this;
self.submittedValue = ko.observable(decimalValue);
self.percentage = ko.computed({
read: function() {
alert('read');
if (isNaN(parseFloat(self.submittedValue())))
return '';
var num = self.submittedValue() * 100;
return parseFloat(num.toFixed(2));
},
write: function(value) {
alert('write');
value = isNaN(value) ? '' : parseFloat((value / 100).toFixed(4));
self.submittedValue(value);
},
owner: self
});
}
ko.applyBindings(new ViewModel());
和html
<p><input data-bind="value:percentage"></input></p>
<p><input data-bind="value:submittedValue"></input></p>
编辑:
知道这是一个旧的,但我想注意的是,将其添加到写方法中
self.percentage.notifySubscribers(value);
它解决了这个问题(理想情况下,我们可以对照当前值进行检查,如果它真的发生了变化,就通知它)
Fiddle:http://jsfiddle.net/RTexF/1/和http://jsfiddle.net/RTexF/2/
如果您在read:中放入一个alert("read")
,在write:中放入alert("write")
,然后再次运行您的示例,这可能会帮助您思考这个问题。
当您第一次通过写入写入底部框时更改顶部框,然后随着submittedValue
可观测值的更改重新计算顶部框,您将看到读取命中百分比。
下一次编辑顶部框时,由于我们正在更改值,写入将再次被点击,这是有道理的,但由于submittedValue
没有更改,因此读取不会再次发生,因为它所依赖的可观察对象不会更改。
- 用于Javascript中小数输入的Regex,小数前有1到3位,小数后有1到三位
- 在javascript中使用小数
- 正则表达式,不允许在javascript中使用负数和小数以及零
- 用于输入文本字段的Javascript验证器,仅用于两位小数
- JavaScript 是否考虑了本地小数分隔符
- 浮点数的总和在 JavaScript 中没有给出小数
- 删除Javascript中小数后的数字
- 用Javascript替换数字's小数
- JavaScript从我的小数中去除了.00
- JavaScript打印的数字有20位小数
- Javascript-格式化数字,始终显示原始的小数位数
- 使用javascript查找小数前的整数(不包括特殊字符)
- 如何通过 javascript 在浮点数中保留小数点数后的 2 位数字
- 如何在javascript中使用小数
- 在Javascript中,大浮点数的小数位数有限制吗
- 如何在使用 JavaScript 四舍五入小数时忽略 “”,“
- 如何在javascript中将小数转换为帧速率指定
- 向下舍入小数 JavaScript
- 需要帮助进位小数Javascript
- 格式化小数javascript/jquery