Copy link to clipboard
Copied
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.
Have something to add?
Find more inspiration, events, and resources on the new Adobe Community
Explore Now