toFixed()文本字段中的简单使用/说明

时间:2014-10-21 18:31:55

标签: javascript jquery

我已经避免在这里提出这个问题,因为我知道很多人在过去。我花了一些时间在最近几天试图找到一个解决方案/弄清楚toFixed()方法是如何工作的。我在这个网站上阅读了很多问题,在其他网站上阅读了教程,但我还是没有得到它。

我有几个带有类“.entry”的文本字段。一美元金额应该在这里。当人们键入以下内容(示例)时:

1.2
5
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) + '<br>' );

但这不是我想要的。我需要它出现在文本字段中。

提前致谢!

1 个答案:

答案 0 :(得分:1)

一些事情:

  1. 使用change事件代替keyup。如果您使用keyup,则每次用户尝试输入内容时文本都会更改,这会让用户感到烦恼。
  2. 考虑使用input类型为number,步骤为0.1
  3. 考虑到这些,我会做这样的事情:

    $('.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/