【问题标题】:Muiltplie two fields, one with a percentage sign将两个字段相乘,其中一个带有百分号
【发布时间】:2016-04-22 21:04:52
【问题描述】:

我正在尝试获得两个表单域的产品。

字段 A * 字段 B = 字段 C

示例:(5.7%) * 14835 = 846

但是当我运行代码时,它会返回“NaN”。

我已经确定字段 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):"";

【问题讨论】:

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

标签: javascript pdf rounding


【解决方案1】:

看起来您只需从该输入值中取出 % 符号即可正确计算。这可以通过这样的替换来完成:

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

【讨论】:

  • 这行得通,答案很好,但是当我点击文本并转到另一个时,字段 A 变为“1.$ %”,字段 C 保持不变,字段 C 变为“南”。知道为什么吗?
【解决方案2】:

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

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

如果您希望用户输入百分比数字,请将以下脚本添加到 onFocus 事件:

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

到Validate 事件:

event.value = event.value / 100 ;

应该这样做。

注意:我现在没有验证。

【讨论】:

  • 效果很好,但我希望该字段在他们输入内容之前为空白,如果其中没有值则为空白。目前显示为 0.0%。我添加了验证字段: if (!event.value) event.value = "";否则 event.value = event.value / 100 ;
猜你喜欢
  • 2017-12-25
  • 2014-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多