从输入中获取值,结果为NaN

时间:2014-06-18 06:53:01

标签: jquery

这很奇怪,我试图做一个简单的计算,但由于某种原因我无法从输入中获得价值,而且它只适用于特定的输入,而不是每个人。

这就是我试图获得价值的方式:

var Days = parseInt($('#days').val());
var DaysPayment = parseInt($('#days-payment').val());

但是它不起作用,尽管其他输入工作正常。

你可以在JSFiddle上看到这个:http://jsfiddle.net/jEU4L/

2 个答案:

答案 0 :(得分:3)

您需要从点击处理程序中的字段中检索值。当你在空白时加载它们时,计算结果为NaN。此外,您应该在parseInt来电中加入基数。试试这个:

$(document).ready(function () {
    var $execute = $('#execute');
    var $total = $('#total');
    var $totalNDS = $('#total-nds');

    $execute.on('click', function () {
        var payment = parseInt($('#payment').val().replace(/ /g, ""), 10);
        var nds = parseInt($('#nds').val(), 10);
        var days = parseInt($('#days').val(), 10);
        var daysPayment = parseInt($('#days-payment').val(), 10);

        var t1 = payment / 100;
        var t2 = t1 * nds;
        var t3 = payment - t2;
        var t4 = t3 / days;
        var t5 = t4 * daysPayment;    
        $total.val(t5);
    });
});

Updated fiddle

我还更改了变量名称以使用通常的JS和jQuery约定(即包含jQuery对象的变量以$为前缀,变量名称应该是驼峰式的)。

答案 1 :(得分:0)

您需要更改功能:

$(document).ready(function(){
    var Payment = parseInt($('#payment').val().replace(/ /g,""));

    var Execute = $('#execute');
    var Total = $('#total');
    var TotalNDS = $('#total-nds');

    Execute.on('click',function(){

        var NDS = 0
    var Days = 0
    var DaysPayment= 0
    if($('#nds') > 0)
     NDS = parseInt($('#nds').val());
    if($('#days') > 0)
     Days = parseInt($('#days').val());
    if($('#days-payment') > 0)
     DaysPayment = parseInt($('#days-payment').val());

        console.log(Days+' '+DaysPayment);
        var t1 = Payment/100;
        console.log(t1);        
        var t2 = t1 * NDS;
        console.log(t2);
        var t3 = Payment - t2;
        console.log(t3);
        var t4 = t3 / Days;
        console.log(t4);
        var t5 = t4 * DaysPayment;
        console.log(t5);

        Total.val(t5);


    });

});

因为您没有获得以月或天为单位的默认值,因此您获得了NaN