toFixed()在文本字段中简单使用/解释
我已经避免在这里提出这个问题了,因为我知道过去有很多这样的问题。 我花了一些时间在最近几天试图找到解决方案/弄清楚toFixed()方法是如何工作的。 我已经阅读了很多关于这个网站的问题和其他人的教程,但我仍然没有得到它。
我有几个带有类“.entry”的文本字段。 一美元金额应该在这里。 当人们键入以下内容(示例)时:
1.2
五
6.35
8。
我需要他们改为:
1.20
5.00
6.35
8.00
换句话说,添加尾随零。 我知道这是通过toFixed()方法完成的,但我完全不知所措。 我无法让它发挥作用。
我有一个脚本,我发现它总结了页面上其他地方的DIV中的所有文本字段,我注意到它使用了toFixed()方法:
$("#total").html(sum.toFixed(2).replace(/(^\d{1,3}|\d{3})(?=(?:\d{3})+(?:$|\.))/g, '$1,')); }
我尝试在这里使用相同的代码,因此零可以显示在文本字段中:
$('.entry').keyup(function(){ var str = this.value.replace(/(^\d{1,3}|\d{3})(?=(?:\d{3})+(?:$|\.))/g, '$1'); if (str!=this.value) this.value = str; });
它不起作用。
我是Jquery和Javascript的新手,所以我意识到我可能错过了一些明显的东西。 我读过的大多数教程都在代码中设置了变量,然后使用“document.write”来显示具有正确零数的变量:
例:
document.write( 1.1.toFixed(2) + '
' );
但这不是我想要的。 我需要它出现在文本字段中。
提前致谢!
一些东西:
- 使用
change
事件而不是keyup
。 如果你使用keyup
,每次用户尝试输入内容时文本都会改变,这是一种烦人的用户体验。 - 考虑使用类型
number
的input
,步长为0.1
。
考虑到这些,我会做这样的事情:
$('.entry').change(function(){ // parse the typed value as a floating point number var num = parseFloat(this.value); // ensure there are two decimal places this.value = num.toFixed(2); });
请注意,如果用户键入超过两位小数的内容,则该值将被舍入。
示例: http : //jsfiddle.net/jndt1e02/