1

我正在 Adob​​e Acrobat DC 中处理可填写的 PDF 表单,并且是 JavaScript 新手。我需要价值在 2018 年 9 月 21 日之前为 100 美元,然后从 9/22 到 10/19 为 125 美元,然后从 10/20 开始为 150 美元。

我有下面的脚本,它适用于第一if条语句,但它不计算脚本的 10/20/2018 部分。有人可以帮助我并告诉我我做错了什么吗?

var sub = 100 * Number(this.getField("numEthernet").value);    
var s = this.getField("Date").valueAsString;   
if (s!="") {  
    var d = util.scand("mm/dd/yyyy", s);  
    var cutOffDate = util.scand("mm/dd/yyyy", "9/21/2018");  
    if (d.getTime()>cutOffDate.getTime()){   
        sub *= 1.25;  
    }
}  
else if (s!="") {  
    var d = util.scand("mm/dd/yyyy", s);  
    var cutOffDate = util.scand("mm/dd/yyyy", "10/20/2018");  
    if (d.getTime()>=cutOffDate.getTime()){   
        sub *= 1.50;  
    }  
}
event.value = sub;
4

2 回答 2

2

我不熟悉 Acrobat DC,所以我不太确定一些 javascript 的基本方法/对象的可用性,但这应该可以工作,因为我试图从我的答案中删除任何不必要的代码:

var sub = 100 * Number(this.getField("numEthernet").value);
var s = this.getField("Date").valueAsString;
if (s != "") {
    var dateFormat = "mm/dd/yyyy";
    var suppliedDate = util.scand(dateFormat, s).getTime();
    if (suppliedDate >= util.scand(dateFormat, "9/22/2018").getTime() && suppliedDate <= util.scand(dateFormat, "10/19/2018").getTime()){
        sub *= 1.25;
    }
    else if (suppliedDate >= util.scand(dateFormat, "10/20/2018").getTime()) {
        sub *= 1.50;
    }
}
event.value = sub;

将来我会建议换成var s = this.getField("Date").valueAsString类似的东西,var s = this.getField("Date").valueAsString.trim()这样空格就不会引起任何问题,但我不确定 Acrobat DC 中是否可以使用 trim

于 2018-07-02T19:07:00.050 回答
0

看起来您的 if 语句正在检查 s 是否不是空字符串。您的 else if 语句正在寻找相同的东西,但由于您的初始 if 语句已经成功,它不会寻找 else if。

在不知道您的确切语法的情况下,尝试查找 2 项:

if(s!="" && /* Check if the current date is within your first time period */) {
  sub *= 1.25;
}
else if(s!="" && /* Check if the current date is within your second time period */) {
  sub *= 1.50;
}

类似的东西。

于 2018-07-02T18:41:25.823 回答