我在Acrobat中打开的Adobe PDF中有几个复选框。我想计算已经检查过的复选框,并在另一个文本框中输出该数字。我怎么能用JavaScript做到这一点?还是其他方法?
答案 0 :(得分:1)
由于a script by George Johnson back in 2008,我只能通过一个非常简单的脚本来实现这一目标。
我所做的是创建一个文本字段,将其设置为只读,并将其设置为自定义计算值并将其放在脚本字段中:
// Initialize counter variable
var sum = 0;
// Loop through the fields
for (var i = 1; i < 180; i += 1) {
// Add one if check box is not Off
if (getField("CheckBox" + i).value !== "Off") {sum += 1;}
}
// Set this field's value to the sum
event.value = sum;
重要提示:我的"CheckBox" + i
循环中有i < 180
和for
因为我的所有复选框都被命名为&#34; CheckBox1&#34;,&#34; CheckBox2&#34;等等,通过&#34; Checkbox180&#34;。
如果您的复选框都具有唯一的名称,则需要将这些名称放在数组中并在代码中循环显示。如果您只有15个复选框,则将脚本中的180更改为15。
答案 1 :(得分:0)
一种可能性是设置一个计数器,枚举所有字段,检查该字段是否为复选框,然后检查其值是否为&#34; Off&#34 ;;在这种情况下增加计数器。这样做的功能如下:
function countCheckedBoxes() {
var cntr = 0;
for (var i = 0; i < this.numFields; i++) {
var mf = this.getField(this.getNthFieldName(i));
if (mf.type == "checkbox") {
if (mf.value != "Off") {
cntr++;
}
}
}
if (cntr > 0) {
app.alert("The form has " + cntr + " checked boxes")
} else {
app.alert("The form has no checked boxes")
}
}
那应该这样做。
由于复选框的数量应该进入另一个字段,您可以使用以下代码替换cntr
的评估:
if (cntr > 0) {
this.getField("boxCount").value = cntr + " boxes checked";
} else {
this.getField("boxCount").value = "no boxes checked";
}
...或只输入cntr
的值。