How can I add javascript to a PDF document to count the number of checked boxes and enter the value into a textbox area?

谁说我不能喝 提交于 2019-12-06 10:21:55

问题


So I have a PDF doc that has 25 check boxes called "cb1" through "cb25". I would like to be able to count the number of boxes that are checked and put that count into a text box area called "Points".

I'm not very familiar with either JS or PDF form creation but from what I've been able to dig up I think I'm close to getting it to work.

I have added the following code to the document level:

function CountCheckBoxes(aFieldsNames) {
    // count field names that have been selected
    var count = 0;
    // loop through array of field names
    for (i = 0; i < aFieldNames.length; i++) {
      // for field names with a value of not Off increment counter
      if (this.getField(aFieldNames[i]).value != "Off") count++;
    } // end loop of field names
    // return count
    return count;
  } // end CountCheckBoxes

I've tried adding the following code text box properties to execute JS on mouse up and as a calculated value, neither of which seem to work to populate the text box with a count of checked boxes.

// var define field names to be tested
var aFields = new Array('cb1', 'cb2', 'cb3', 'cb4', 'cb5', 'cb6', 'cb7', 'cb8', 'cb9', 'cb10', 'cb11', 'cb12', 'cb13', 'cb14', 'cb14', 'cb15', 'cb16', 'cb17', 'cb18', 'cb19', 'cb20', 'cb21', 'cb22', 'cb23', 'cb24', 'cb25');
// count field names that have been selected
event.value = CountCheckBoxes(aFields);

回答1:


The code below should be added to the text field that keeps count of the boxes. To do so, right click on the form field then Properties -> Calculate -> Custom Calculation Script -> "Edit...".

var sum = 0;
for ( i = 1; i < 26; i++ ) {
        f = "cb" + i;
        field = getField(f);
        if (field.isBoxChecked(0)) {
            sum = sum + 1;
        }
    }
event.value = sum;

This is tested and working in an actual document. Here are some details about the code:

There is a loop that goes over all 25 fields, and creates a string for each one of their names. The string values are "cb1", "cb2" etc. Then gets the field by name. The isBoxChecked(0) field method, will return true if the box is checked. If a box is checked, the code will bump up the sum of all checked fields. When it's all done, the sum is assigned to the current text field.

Here is a link to the JS for Acrobat reference. It's quite useful when putting together samples like the one above.



来源:https://stackoverflow.com/questions/34642688/how-can-i-add-javascript-to-a-pdf-document-to-count-the-number-of-checked-boxes

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!