Skip to main content
Participant
October 20, 2016
Question

Validate required fields before save and email

  • October 20, 2016
  • 0 replies
  • 1057 views

I have a data input form, the first of several planned, with various text, checkbox and radio fields. I'm using the "Required" attribute on several fields. I have a couple of checkboxes that use a custom validation to mark others required if they're checked. All working fine at this point as long as I use a Submit Form action. Now I'm trying to develop a javascript button for "Save and Send". Of course that eliminates the SubmitForm required field checking and I have to add that into my processing script. I have the initial code working which flattens or marks readonly and creates the email with subject and message using some field data for identification.

// Flatten the form in Acrobat or mark READONLY in Reader

flattenFields()

function flattenFields() {

    if (app.viewerType=="Reader") {

        for (var i=0 ; i<this.numFields ; i++) {

            var f = this.getField(this.getNthFieldName(i)) ;

            if (f==null) continue;

            f.readonly = true;

        }

    } else {

        this.flattenPages();

    }

}

// Email the form

// Recipient Email

var cToAddr = "email@somedomain.com"

// The Employee Name and Effective Date for the Subject and Message

var cEmployee = this.getField("Employee.Name").value;

var cDate = this.getField("Effective.Date").value;

// Set the subject and body text for the email message

var cSubLine = "BRR Data Input Form-" + cEmployee + "-" + cDate;

var cBody = "Data Input Form - " + cEmployee + " - Effective Date " + cDate;

// Send the entire PDF as a file attachment on an email

this.mailDoc({bUI: true, cTo: cToAddr, cSubject: cSubLine, cMsg: cBody});

Now I'm trying to add a function at the top to validate all the fields marked required before it will proceed. I've followed several different examples and at one time I had a working test using this code

// Check for empty required fields

var emptyFields = [];

for (var i=0; i<this.numFields; i++) {

      var f= this.getField(this.getNthFieldName(i));

      if (f.type!="button" && f.required && f.display==display.visible) {

           if ((f.type=="text" && f.value=="") || (f.type=="checkbox" && f.value=="Off")) emptyFields.push(f.name);

      }

}

if (emptyFields.length>0) {

      app.alert("You must fill in the following fields:\n" + emptyFields.join("\n"));

}  else {

// rest of processing and email

}

Then I realized that once the validation passes it won't do anything else. No prompts, no email, nothing.

Any suggestions would be appreciated.

This topic has been closed for replies.