如何只计算PDF表格中选中的复选框?

时间:2014-07-08 05:08:10

标签: javascript pdf checkbox acrobat

我在Acrobat中打开的Adobe PDF中有几个复选框。我想计算已经检查过的复选框,并在另一个文本框中输出该数字。我怎么能用JavaScript做到这一点?还是其他方法?

2 个答案:

答案 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 < 180for因为我的所有复选框都被命名为&#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的值。