jquery parseFloat,parseInt

dee*_*ell 4 jquery

我有以下情况,我正在使用jquery,我需要在表单上总结一些字段.我在小计字段总字段中发现了NaN错误. 我已经尽力避免这种类型的错误,我只需要在这个字段上使用SUM.我表格中的所有内容都运行良好,只有这2个字段有问题.我正在使用parseFloat(),没有回应.只有NaN的一个字段

按照我的JavaScript代码:

$(document).ready( function() {

        $('#valor, #taxa, #imposto, #envio, #taxa_adicional, #subtotal, #total').blur(function(){

                    // exemplo antigo var val = $('#valor').val();
                    var val = $('#valor').format({format:"#,###.00", locale:"br"});
                var tax = $('#taxa').format({format:"#,###.00", locale:"br"}); 
                var imp = $('#imposto').format({format:"#,###.00", locale:"br"}); 
                var env = $('#envio').format({format:"#,###.00", locale:"br"});
                var xat = $('#taxa_adicional').format({format:"#,###.00", locale:"br"}); 

                if(val == "") val = 0;
                if(tax == "") tax = 0;
                if(imp == "") imp = 0;
                if(env == "") env = 0;
                if(xat == "") xat = 0;

                    var subtotal = parseFloat("val") + parseFloat("tax") + parseFloat("imp") + parseFloat("env");
                var total = parseFloat(val) + parseFloat(tax) + parseFloat(imp) + parseFloat(env) + parseFloat(xat);

                    $('#subtotal').format({format:"#,###.00", locale:"br"});
                $('#total').val(total);
        })

});
Run Code Online (Sandbox Code Playgroud)

提前感谢您对此事的任何帮助!: - /

警告:我正在使用一个名为jquery.numberformatter的插件
--JQuery中的格式化/解析数字由Michael Abernethy撰写

Šim*_*das 7

HTML:

<div id="box">    
    <p> Valor: <input id="valor"> </p>
    <p> Taxa: <input id="taxa"> </p>
    <p> Imposto: <input id="imposto"> </p>
    <p> Envio: <input id="envio"> </p>
    <p> Taxa adicional: <input id="taxa_adicional"> </p>   
    <p> Subtotal: <span id="subtotal">0</span> </p>
    <p> Total: <span id="total">0</span> </p>   
</div>
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

var options = {
        format: '#,###.00',
        locale: 'br'
    },
    inputs = $( 'input:text', '#box' ).get(),
    input_adicional = $( '#taxa_adicional' )[0],
    input_total = $( '#total' )[0],
    input_subtotal = $( '#subtotal' )[0];
Run Code Online (Sandbox Code Playgroud)

然后:

$( inputs ).add( [ input_total, input_subtotal ] ).format( options );

$( inputs ).
    blur( function () {
        var total = 0,
            subtotal = 0;

        // on blur, format the field
        $( this ).format( options );

        // calculate the sum of all input fields
        $( inputs ).each( function () {
            total += +$( this ).parse( options );
        });

        // subtotal doesn't include the "additional" field  
        subtotal = total - $( input_adicional ).parse( options );

        // populate the SPAN's with the sums and format the nubmers
        $( input_subtotal ).text( subtotal ).format( options );
        $( input_total ).text( total ).format( options );
    }).
    focus( function () {
        // if the field contains the value 0, empty it
        if ( +$( this ).parse( options ) === 0 ) {
            this.value = '';
        }
    });
Run Code Online (Sandbox Code Playgroud)

现场演示: http ://jsfiddle.net/U9V6x/


Jam*_*acs 5

当您计算小计时,您是在一系列字符串上调用 parseFloat(),而不是变量本身。该行应该是:

 var subtotal = parseFloat(val) + parseFloat(tax) + parseFloat(imp) + parseFloat(env);
Run Code Online (Sandbox Code Playgroud)