关键如何在jquery中添加小数值?

时间:2015-05-26 09:34:18

标签: javascript jquery

On键,输入值后如何添加小数值?

对于ex:我输入值10结果应该是10.00。

如果我加10.50结果应该是10.50。我怎么能实现这个?

Jquery Demo Fiddle

$("#txtQty").keyup(function() {
    var $this = $(this);
    $this.val($this.val().toFixed(2));        
});

4 个答案:

答案 0 :(得分:3)

使用parseFloat,然后toFixed

  $this.val(parseFloat($this.val()).toFixed(2));        

此外,最好使用change而不是keyup,因为keyup不允许在文本框中途更改值

$("#txtQty").change(function() {
    var $this = $(this);
    $this.val(parseFloat($this.val()).toFixed(2));        
});

DEMO

答案 1 :(得分:1)

您必须先转换为float,然后使用toFixed在小数点后添加两位数。

此外,您应该使用keyup事件代替blur事件。

试试这个:

$this.val(parseFloat($this.val()).toFixed(2));

演示:https://jsfiddle.net/tusharj/ecDmn/113/

答案 2 :(得分:0)

$(this).val(parseFloat($(this).val()).toFixed(2));
                 (or)
$(this).val(Number($(this).val()).toFixed(2)); 

答案 3 :(得分:0)

我知道这更像是一种矫枉过正,但建议的解决方案看起来并不整洁(字母闪烁,NaN,当你输入字母时等)。

试试这个:

$("#txtQty").keypress(function(e) {  
    var keyCode = e.keyCode || e.which;
    if ([8, 9, 13, 37, 39, 46].indexOf(keyCode) != -1) {
        // backspace, tab, enter, left-array, right-arrow, delete
        return;
    }

    var input = $(e.target || e.srcElement);
    var regex = /^[0-9]+[.,]{0,1}[0-9]{0,2}$/;
    var key = String.fromCharCode(keyCode);

    var selection = input.getSelection();
    var stringPart1 = input.val().substring(0, selection.start);
    var stringPart2 = input.val().substring(selection.end, input.val().length);
    var newValue = stringPart1 + key + stringPart2;

    if (!regex.test(newValue)) {
        e.returnValue = false;
        if (e.preventDefault) e.preventDefault();
    }    
});

此代码可防止输入会导致违反正则表达式的符号,因此显示始终为 00.00 格式。

此代码需要jQuery和rangyinputs微型jQuery插件来管理用户选择。但是如果你愿意,你可以为此编写自己的代码,或者只是在文本框中放弃(或禁止)范围选择。

JSFiddle

祝你好运。