2011-11-30 37 views
1

我對jquery很新,並且正在逐步完成我的書!我已經爲某些表單字段值生成了這個簡單的計算器。基本上如果用戶選擇百分比進行百分比計算並將結果放入另一個表單字段中。如果用戶選擇了mvalue,腳本只是將該值放入表單字段中。百分比計算器完美地工作,問題出在腳本的第二部分,firefox中的錯誤消息是calcVal.toFixed不是函數。我的道歉,如果這個代碼是矯枉過正或矮胖,但正如我說我還在學習。使用jquery來計算一些表單字段

<script type="text/javascript"> 
     function myCalc() { 
     var selectVal = $('##txt_passoc_type#currentrow# :selected').val(); 
     var valBox = $('##mon_value#currentrow#').val(); 
     var currentPrice = $('##currentPrice#currentrow#').val(); 
     if (selectVal == "Percentage"){ 
     var calcVal = ((currentPrice * valBox)/100); 
     var myTotal = currentPrice - calcVal; 
     var myCleanTotal = myTotal.toFixed(2); 
     $('##mon_paasoc_dprice#currentrow#').val(myCleanTotal); 
     $('##screenPrice#currentrow#').val(myCleanTotal); 
    } 
    else if (selectVal == "MValue"){ 
     var myVal = $('##mon_value#currentrow#').val(); 
     var calcVal = myVal 
     var myTot = calcVal.toFixed(2); 
     $('##mon_paasoc_dprice#currentrow#').val(myVal); 
     $('##screenPrice#currentrow#').val(myVal); 


    } 

     } 

    </script> 

任何幫助表示讚賞。

傑森

回答

2

的問題是,你是在一個字符串調用toFixed(),它可以obnly可以在許多

例如,這給出了一個錯誤

var calcVal = "3"; 
var myTot = calcVal.toFixed(2); 

而這個所謂的不是

var calcVal = "3"; 
calcVal = parseInt(calcVal , 10); 
var myTot = calcVal.toFixed(2); 

所以在你的例子中你應該這樣做:

else if (selectVal == "MValue"){ 
    var myVal = $('##mon_value#currentrow#').val(); 
    var calcVal = parseInt(myVal, 10);//convert to a Number! 
    var myTot = calcVal.toFixed(2); 
    $('##mon_paasoc_dprice#currentrow#').val(myVal); 
    $('##screenPrice#currentrow#').val(myVal); 
} 

你不需要在if部分做任何事情,因爲calcVal是一個數字

var calcVal = ((currentPrice * valBox)/100);//Here calcVal is a number already 
var myTotal = currentPrice - calcVal; 
+0

真棒,謝謝!一直拉着我的頭髮!除此之外,代碼的其餘部分看起來不錯,即不沉重等 –

+0

@JasonCongerton是的其他代碼應該沒問題 –

2

,如果你發佈你的HTML與JavaScript的沿着這可能是有益的,但是,我懷疑你是調用toFixed在一個字符串上。你應該試試這個:

parseFloat(calcVal).toFixed(2) 
相關問題