我正在Adobe 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;
答案 0 :(得分: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中是否有修剪功能
答案 1 :(得分: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;
}
类似的事情。