2014-06-18 75 views
1

这很奇怪,我试图做一个简单的计算,但由于某种原因,我无法从输入中获取值,并且它仅适用于特定输入,而不适用于大家。从输入获得值,结果为NaN

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

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

但它不工作,但其他投入工作正常。

你可以看到这个在这里的jsfiddle:http://jsfiddle.net/jEU4L/

+0

我认为这可能是bcoz乌尔取代函数试试这个 'replace(/ \ r?\ n/g,'')' –

回答

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对象变量都带有前缀$和变量名应该是骆驼套管) 。

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); 


    }); 

}); 

因为你没有得到在数天或数天,一个月的默认值varables所以你得到的NaN