[英]If I have multiple checkboxes in a form how can I pass all the checkboxes that are currently checked?
[英]How can I count only checked checkboxes in a PDF form?
我在Acrobat中打开的Adobe PDF中有一些复选框。 我要计算已选中的复选框,并在另一个文本框中输出数字。 如何使用JavaScript做到这一点? 还是其他方法?
多亏了George Johnson早在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;
重要说明: for
循环中包含"CheckBox" + i
和i < 180
,因为我的所有复选框都通过“ Checkbox180”命名为“ CheckBox1”,“ CheckBox2”等。
如果所有复选框均具有唯一的名称,则需要将这些名称放入数组中并在代码中循环遍历。 如果您只有15个复选框,则将脚本中的180更改为15。
一种可能是设置一个计数器,枚举所有字段,检查该字段是否为复选框,然后其值是否不为“ Off”; 在这种情况下,增加计数器。 这样做的函数如下所示:
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
的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.