使用jquery numberformatter格式化数字并将其格式化

时间:2014-12-15 12:09:36

标签: javascript jquery

我使用jquery numberformatter格式化输入字段的数字,这是有效的,但我必须将它们格式化,以便对数字进行一些计算,但这不起作用。如何将格式化的数字转换回来,以便我可以使用计算功能?

以下是数字格式的JS:

 $("[id$='abzug']").keyup(function(){
    $(this).parseNumber({format:"#,###", locale:"ch"});
    $(this).formatNumber({format:"#,###", locale:"ch"});
    val();
 });

这里是HTML:

  <input class="form-control" id="kunst_abzug" type="text">
  <input class="form-control" id="theater_abzug" type="text">

这里有计算总数的函数:

function id(id){return document.getElementById(id);}
function val(){
val_totalEingespart = parseInt(id("totalEingespart").value) || 0;
val1 = parseInt(id("kunst_abzug").value) || 0;
val2 = parseInt(id("theater_abzug").value) || 0;
var total_abgezogen = val_totalEingespart - val1 - val2;
var total_abgezogenCHF = total_abgezogen.toLocaleString('de-CH');  
id("totalSum2").innerHTML = total_abgezogenCHF + ' CHF';
}

我还创建了一个js小提琴:http://jsfiddle.net/Lffpg4xp/2/

1 个答案:

答案 0 :(得分:2)

从每个输入元素中删除onkeyup="val()并将其添加到document.ready中的函数键。

$( document ).ready(function() {
$("[id$='abzug']").keyup(function(){
        $(this).parseNumber({format:"#,###", locale:"ch"});
        $(this).formatNumber({format:"#,###", locale:"ch"});
    val();
     });
 });

function getElementValue(id){
     var num = $('#' + id).val();
     return $.parseNumber(num, {format:"####", locale:"ch"});
}

function val(){
    val_totalEingespart = parseInt(getElementValue("totalEingespart")) ? parseInt(getElementValue("totalEingespart")) :  0;
    val1 = parseInt(getElementValue("kunst_abzug")) ? parseInt(getElementValue("kunst_abzug")) : 0;
    val2 = parseInt(getElementValue("theater_abzug")) ?  parseInt(getElementValue("theater_abzug")) : 0;
    var total_abgezogen = val_totalEingespart - val1 - val2;
    $("#totalSum2")[0].innerHTML = total_abgezogen.toLocaleString('de-CH') + ' CHF';
}

更新了fiddle