使用特定组合计算和验证100.000时出错

时间:2014-01-28 16:28:18

标签: javascript jquery

我有一个有趣的问题,我想与大家分享。在表单上,​​我们重复分配百分比的行。最后,所有行组合需要等于100.000(或100%)。如果确实如此,则通过验证并提交表格。我们要求输出3个小数点。

但是通过以下组合,表单无法满足验证。真的很奇怪。

  • 第1行:63.877
  • 第2行:34.286
  • 第3行:1.837
  • 总计= 100.000

HTML

<!-- Repeating Field in Rows -->
<input type="text" name="txtDistributionPerc" id="txtDistributionPerc" 
onkeypress='return chkKeys(event, "C");' maxlength="7" 
onblur="txt_blur_calculateFundingTotal(this);"></input>

JavaScript JQuery

// Filters out invalid keystrokes
function chkKeys(e,type){
    var keynum = e.keyCode;
    var keychar = String.fromCharCode(keynum);

    switch (type){
        case 'C':   /* currency ($, numbers, .) */
            valChk = /[0-9\$\.]/;
            return valChk.test(keychar);
            break;
        default:
            break;
    }
}

//Calculates a specific one based on the element passed
function txt_blur_calculateFundingTotal(ele)
{
    if(ele)
    {
        var total = 0.000;
        $(ele).closest('table').find('input[name=txtDistributionPerc]').each(function (i) {
            this.value = formatCurrency(this.value, 3, '.', '');
            var tmp = parseNumber(this.value);
            if(tmp < 0.000 || tmp > 100.000) { 
                this.value = '0.000'; 
                tmp = 0.000;
            }
            total+=tmp;
        });
        $(ele).closest('table').find('input[name=txtTotalPerc]').val(formatCurrency(total, 3, '.', ''));
        if(total != 100.000 && total != 0.000)
        {
            $(ele).closest('table').find('input[name=txtTotalPerc]').addClass('error');
            $(ele).closest('table').find('input[name=txtTotalPercValidated]').val('');
        }
        else
        {
            $(ele).closest('table').find('input[name=txtTotalPerc]').removeClass('error');
            $(ele).closest('table').find('input[name=txtTotalPercValidated]').val('true');
        }
    }
}

有更好的方法吗?谢谢你的期待。

1 个答案:

答案 0 :(得分:0)

将值乘以1000并使用整数。

似乎必须使用浮动值。

祝你好运!