小数分隔符后输出两位数字也包含逗号

时间:2015-08-12 06:54:47

标签: jquery

我有一个只允许数值的文本框, 并且它用逗号分隔,工作正常,而我使用小数分离它从第一个逗号字段中清除,

实施例: 我输入一个数字:43,453 我需要结果:43,453.00 现在结果:43.00

请帮我解决这个问题

HTML

<input type="text" class="form-control number numericOnly" />

凭证

$(document).ready(function () {

    $("input.number").blur(function () {
        $(this).val(parseFloat($(this).val()).toFixed(2));
    });

    $('input.number').keyup(function(event) {

        // skip for arrow keys
        if(event.which >= 37 && event.which <= 40){
            event.preventDefault();
        }

        $(this).val(function(index, value) {
            value = value.replace(/,/g,'');
            return numberWithCommas(value);
        });
    });

    function numberWithCommas(x) {
        var parts = x.toString().split(".");
        parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
        return parts.join(".");
    }
});

$('.numericOnly').keypress(function (event) {
    if ((event.which != 46 || $(this).val().indexOf('.') != -1) &&
      ((event.which < 48 || event.which > 57) &&
        (event.which != 0 && event.which != 8))) {
        event.preventDefault();
    }

    var text = $(this).val();

    if ((text.indexOf('.') != -1) &&
      (text.substring(text.indexOf('.')).length > 2) &&
      (event.which != 0 && event.which != 8) &&
       ($(this)[0].selectionStart >= text.length - 2)) {
        event.preventDefault();
        }
       });

JsFiddle

1 个答案:

答案 0 :(得分:1)

这是因为parseFloat操作而发生的。最简单的解决方案是在转换为浮动之前替换逗号:

$("input.number").blur(function () {
    $(this).val(numberWithCommas(parseFloat($(this).val().replace(/,/g, '')).toFixed(2)));
});

Updated demo