2016-04-22 16 views
0

我试图获得两个表单字段的产品。Muiltplie两个字段,一个用百分比符号

场A *字段B = C区域

例如:(5.7%)* 14835 = 846

但是当我运行它回来 “南” 的代码。

我确定字段C正在尝试乘以%符号。如何让字段C在执行计算时忽略%符号?

字段自定义计算脚本 - 这个舍入到最近的十分之一,并增加了一个“%”符号

if (!event.value) event.value = ""; 

else 
event.value = util.printf("%.1f%", event.value); 

字段B定制计算脚本 - 这个舍入为最接近的整数

if (!event.value) event.value = ""; 

else 
event.value = util.printf("%.0f", event.value); 

领域c自定义计算脚本 - 将字段A和B相乘,舍入为最接近的整数,并在将字段A转换为小数百分比前将其转换为百分比小数

var v1 = getField("FieldA").value!="" ? getField("FieldA").value : 0; 
var v2 = getField("FieldB").value!="" ? getField("FieldB").value : 0; 

event.value = Math.round(((v1/100)*v2) !==0)?Math.round((v1/100)*v2):""; 
+0

因为字符串“5.7%”是NaN(不是数字) – Kenji

回答

0

看起来您可以将%符号从该输入值中正确计算出来。这可以通过替换来完成,如下所示:

var v1 = getField("FieldA").value!="" ? getField("FieldA").value.replace(/%/, '') : 0; 
+0

这很有效,答案很好,但当我点击文本并转到另一个字段时,字段A变为“1. $%”, C字段保持不变,C字段变为“NaN”。任何想法为什么? – dave82

0

将字段A格式化为百分比。

该字段的值必须是实际因子(例如85%为0.85)。

如果你想在用户输入百分比数字,添加下面的脚本来onFocus事件:

event.value = event.target.value * 100 ; 

,并在Validate事件:

event.value = event.value/100 ; 

而且应该这样做。

注:我现在没有验证。

+0

这很好用,但我希望这个字段在输入内容之前是空白的,如果没有值的话,它会变成空白。目前它显示0.0%。我添加到该字段的验证: if(!event.value)event.value =“”; else event.value = event.value/100; – dave82