我对jquery很新,我逐渐完成了我的书!我为一些表单字段值生成了这个简单的计算器。基本上,如果用户选择百分比,则会进行百分比计算,并将结果放入另一个表单字段中。如果用户选择mvalue,则脚本只会将该值放入表单字段中。百分比计算器工作得很好,问题在于脚本的第二部分,firefox中的错误消息是calcVal.toFixed不是函数。如果这段代码过度或粗糙,我会道歉,但正如我所说,我仍在学习。
<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>
感谢任何帮助。
杰森
答案 0 :(得分:2)
问题是你在String上调用了fixed()并且它可以在一个数字上被调用
例如,这会产生错误
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;
答案 1 :(得分:2)
如果您将html与javascript一起发布可能会有所帮助,但我怀疑您是在字符串上调用固定的。你应该试试这个:
parseFloat(calcVal).toFixed(2)