2011-11-30 42 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) 
相关问题