Skip to main content
Inspiring
March 25, 2024
Question

Trying to made a signature field read only unless all checkboxes in a PDF form are checked

  • March 25, 2024
  • 1 reply
  • 830 views

Good morning,

I have a PDF form which I've been tasked to make it so that the signature field only activates if all checkboxes in the form have been checked.

I had Chat GPT write a script which seems to work to make the signature field read only until all boxes are checked, but then when I try to apply the signature it gives me an error which states "The document cannot be signed in its current state.  Please save the document, close it, reopen it, and then attempt to sign again".

I tried that multiple times but I keep getting the same error message.

Any help would be greatly appreciated.

This topic has been closed for replies.

1 reply

Inspiring
March 25, 2024

Well, I think I figured it out.  Rather than putting in a document-level script or a custom calculation script in a hidden text field, I just had to add this as a Mouse-Up action to each of the 62 check boxes:

 

var checkbox1 = this.getField("CheckBox01").value;
var checkbox2 = this.getField("CheckBox02").value;
var checkbox3 = this.getField("CheckBox03").value;
var checkbox4 = this.getField("CheckBox04").value;
var checkbox5 = this.getField("CheckBox05").value;
var checkbox6 = this.getField("CheckBox06").value;
var checkbox7 = this.getField("CheckBox07").value;
var checkbox8 = this.getField("CheckBox08").value;
var checkbox9 = this.getField("CheckBox09").value;
var checkbox10 = this.getField("CheckBox10").value;
var checkbox11 = this.getField("CheckBox11").value;
var checkbox12 = this.getField("CheckBox12").value;
var checkbox13 = this.getField("CheckBox13").value;
var checkbox14 = this.getField("CheckBox14").value;
var checkbox15 = this.getField("CheckBox15").value;
var checkbox16 = this.getField("CheckBox16").value;
var checkbox17 = this.getField("CheckBox17").value;
var checkbox18 = this.getField("CheckBox18").value;
var checkbox19 = this.getField("CheckBox19").value;
var checkbox20 = this.getField("CheckBox20").value;
var checkbox21 = this.getField("CheckBox21").value;
var checkbox22 = this.getField("CheckBox22").value;
var checkbox23 = this.getField("CheckBox23").value;
var checkbox24 = this.getField("CheckBox24").value;
var checkbox25 = this.getField("CheckBox25").value;
var checkbox26 = this.getField("CheckBox26").value;
var checkbox27 = this.getField("CheckBox27").value;
var checkbox28 = this.getField("CheckBox28").value;
var checkbox29 = this.getField("CheckBox29").value;
var checkbox30 = this.getField("CheckBox30").value;
var checkbox31 = this.getField("CheckBox31").value;
var checkbox32 = this.getField("CheckBox32").value;
var checkbox33 = this.getField("CheckBox33").value;
var checkbox34 = this.getField("CheckBox34").value;
var checkbox35 = this.getField("CheckBox35").value;
var checkbox36 = this.getField("CheckBox36").value;
var checkbox37 = this.getField("CheckBox37").value;
var checkbox38 = this.getField("CheckBox38").value;
var checkbox39 = this.getField("CheckBox39").value;
var checkbox40 = this.getField("CheckBox40").value;
var checkbox41 = this.getField("CheckBox41").value;
var checkbox42 = this.getField("CheckBox42").value;
var checkbox43 = this.getField("CheckBox43").value;
var checkbox44 = this.getField("CheckBox44").value;
var checkbox45 = this.getField("CheckBox45").value;
var checkbox46 = this.getField("CheckBox46").value;
var checkbox47 = this.getField("CheckBox47").value;
var checkbox48 = this.getField("CheckBox48").value;
var checkbox49 = this.getField("CheckBox49").value;
var checkbox50 = this.getField("CheckBox50").value;
var checkbox51 = this.getField("CheckBox51").value;
var checkbox52 = this.getField("CheckBox52").value;
var checkbox53 = this.getField("CheckBox53").value;
var checkbox54 = this.getField("CheckBox54").value;
var checkbox55 = this.getField("CheckBox55").value;
var checkbox56 = this.getField("CheckBox56").value;
var checkbox57 = this.getField("CheckBox57").value;
var checkbox58 = this.getField("CheckBox58").value;
var checkbox59 = this.getField("CheckBox59").value;
var checkbox60 = this.getField("CheckBox60").value;
var checkbox61 = this.getField("CheckBox61").value;
var checkbox62 = this.getField("CheckBox62").value;

var signatureField = this.getField("SignatureField");

if (checkbox1 == "Off" || checkbox2 == "Off" || checkbox3 == "Off" || checkbox4 == "Off" || checkbox5 == "Off" || checkbox6 == "Off" || checkbox7 == "Off" || checkbox8 == "Off" || checkbox9 == "Off" || checkbox10 == "Off" || checkbox11 == "Off" || checkbox12 == "Off" || checkbox13 == "Off" || checkbox14 == "Off" || checkbox15 == "Off" || checkbox16 == "Off" || checkbox17 == "Off" || checkbox18 == "Off" || checkbox19 == "Off" || checkbox20 == "Off" || checkbox21 == "Off" || checkbox22 == "Off" || checkbox23 == "Off" || checkbox24 == "Off" || checkbox25 == "Off" || checkbox26 == "Off" || checkbox27 == "Off" || checkbox28 == "Off" || checkbox29 == "Off" || checkbox30 == "Off" || checkbox31 == "Off" || checkbox32 == "Off" || checkbox33 == "Off" || checkbox34 == "Off" || checkbox35 == "Off" || checkbox36 == "Off" || checkbox37 == "Off" || checkbox38 == "Off" || checkbox39 == "Off" || checkbox40 == "Off" || checkbox41 == "Off" || checkbox42 == "Off" || checkbox43 == "Off" || checkbox44 == "Off" || checkbox45 == "Off" || checkbox46 == "Off" || checkbox47 == "Off" || checkbox48 == "Off" || checkbox49 == "Off" || checkbox50 == "Off" || checkbox51 == "Off" || checkbox52 == "Off" || checkbox53 == "Off" || checkbox54 == "Off" || checkbox55 == "Off" || checkbox56 == "Off" || checkbox57 == "Off" || checkbox58 == "Off" || checkbox59 == "Off" || checkbox60 == "Off" || checkbox61 == "Off" || checkbox62 == "Off") {
signatureField.display = display.hidden;
} else {
signatureField.display = display.visible;
}

Nesa Nurani
Community Expert
Community Expert
March 25, 2024

You can use loop to simplify your script:

var signatureField = this.getField("SignatureField");
var allChecked = true;
for (var i=1; i<=62; i++) {
var fieldName = "CheckBox" + (i<10 ? "0" : "") + i;
var checkboxValue = this.getField(fieldName).value;
if (checkboxValue == "Off") {
allChecked = false;
break;}}
signatureField.display = allChecked ? display.visible : display.hidden;
Inspiring
March 26, 2024

The goal posts have shifted.

While the big clunky code I posted is working as far as hiding the signature field unless all checkboxes are checked, and showing it once they are all checked, the boss now wants a message to pop up when a user mouses up from the printed name text field ("PrintedName") if, and only if not all of the checkboxes are checked.  She wants it to be hidden until the user enters their printed name.

Now, I figured out how to get it so the message shows unless all checkboxes are checked and then gets hidden once they are all checked, that was fairly easy, but that is not the functionality she is looking for.

If anyone could help me out I'd be greatly appreciative.