Copy link to clipboard
Copied
In Acrobat Pro DC, I am working on a form containing 14 dropdowns, each having the same default "Click to rate". I am JavaScript illiterate, but I knew I wanted a submit button to do a couple of things, so I searched for code and played with it. My button to submit the form, on mouse up, checks the dropdowns to make sure something other than the default is selected. While I just realized how ridiculously cumbersome the code is, it actually works. Now I also want the form to be emailed via the same button, but I can't figure out how to keep it from emailing when some dropdowns still have the default choice -- the user can now just click okay on the error message, opening the email interface.
Y'all, this code is long and laughable. Don't judge; I said I'm JavaScript illiterate. Thanks for reading and, in advance, for any help I can get.
var bSubmit = true; // logical variable for submission test
// test drop down Dropdown1
this.getField("Dropdown1").required = false; // clear required property
if(this.getField("Dropdown1").value == "Click to rate") {
bSubmit = false;
this.getField("Dropdown1").required = true; // set required property
}
if(bSubmit) {
// your submit action;
} else {
app.alert("Not all required fields completed", 0, 1);
}
var bSubmit = true; // logical variable for submission test
// test drop down Dropdown2
this.getField("Dropdown2").required = false; // clear required property
if(this.getField("Dropdown2").value == "Click to rate") {
bSubmit = false;
this.getField("Dropdown2").required = true; // set required property
}
if(bSubmit) {
// your submit action;
} else {
app.alert("Not all required fields completed", 0, 1);
}
var bSubmit = true; // logical variable for submission test
// test drop down Dropdown3
this.getField("Dropdown3").required = false; // clear required property
if(this.getField("Dropdown3").value == "Click to rate") {
bSubmit = false;
this.getField("Dropdown3").required = true; // set required property
}
if(bSubmit) {
// your submit action;
} else {
app.alert("Not all required fields completed", 0, 1);
}
var bSubmit = true; // logical variable for submission test
// test drop down Dropdown4
this.getField("Dropdown4").required = false; // clear required property
if(this.getField("Dropdown4").value == "Click to rate") {
bSubmit = false;
this.getField("Dropdown4").required = true; // set required property
}
if(bSubmit) {
// your submit action;
} else {
app.alert("Not all required fields completed", 0, 1);
}
var bSubmit = true; // logical variable for submission test
// test drop down Dropdown5
this.getField("Dropdown5").required = false; // clear required property
if(this.getField("Dropdown5").value == "Click to rate") {
bSubmit = false;
this.getField("Dropdown5").required = true; // set required property
}
if(bSubmit) {
// your submit action;
} else {
app.alert("Not all required fields completed", 0, 1);
}
var bSubmit = true; // logical variable for submission test
// test drop down Dropdown6
this.getField("Dropdown6").required = false; // clear required property
if(this.getField("Dropdown6").value == "Click to rate") {
bSubmit = false;
this.getField("Dropdown6").required = true; // set required property
}
if(bSubmit) {
// your submit action;
} else {
app.alert("Not all required fields completed", 0, 1);
}
var bSubmit = true; // logical variable for submission test
// test drop down Dropdown7
this.getField("Dropdown7").required = false; // clear required property
if(this.getField("Dropdown7").value == "Click to rate") {
bSubmit = false;
this.getField("Dropdown7").required = true; // set required property
}
if(bSubmit) {
// your submit action;
} else {
app.alert("Not all required fields completed", 0, 1);
}
var bSubmit = true; // logical variable for submission test
// test drop down Dropdown8
this.getField("Dropdown8").required = false; // clear required property
if(this.getField("Dropdown8").value == "Click to rate") {
bSubmit = false;
this.getField("Dropdown8").required = true; // set required property
}
if(bSubmit) {
// your submit action;
} else {
app.alert("Not all required fields completed", 0, 1);
}
var bSubmit = true; // logical variable for submission test
// test drop down Dropdown9
this.getField("Dropdown9").required = false; // clear required property
if(this.getField("Dropdown9").value == "Click to rate") {
bSubmit = false;
this.getField("Dropdown9").required = true; // set required property
}
if(bSubmit) {
// your submit action;
} else {
app.alert("Not all required fields completed", 0, 1);
}
var bSubmit = true; // logical variable for submission test
// test drop down Dropdown10
this.getField("Dropdown10").required = false; // clear required property
if(this.getField("Dropdown10").value == "Click to rate") {
bSubmit = false;
this.getField("Dropdown10").required = true; // set required property
}
if(bSubmit) {
// your submit action;
} else {
app.alert("Not all required fields completed", 0, 1);
}
var bSubmit = true; // logical variable for submission test
// test drop down Dropdown11
this.getField("Dropdown11").required = false; // clear required property
if(this.getField("Dropdown11").value == "Click to rate") {
bSubmit = false;
this.getField("Dropdown11").required = true; // set required property
}
if(bSubmit) {
// your submit action;
} else {
app.alert("Not all required fields completed", 0, 1);
}
var bSubmit = true; // logical variable for submission test
// test drop down Dropdown12
this.getField("Dropdown12").required = false; // clear required property
if(this.getField("Dropdown12").value == "Click to rate") {
bSubmit = false;
this.getField("Dropdown12").required = true; // set required property
}
if(bSubmit) {
// your submit action;
} else {
app.alert("Not all required fields completed", 0, 1);
}
var bSubmit = true; // logical variable for submission test
// test drop down Dropdown13
this.getField("Dropdown13").required = false; // clear required property
if(this.getField("Dropdown13").value == "Click to rate") {
bSubmit = false;
this.getField("Dropdown13").required = true; // set required property
}
if(bSubmit) {
// your submit action;
} else {
app.alert("Not all required fields completed", 0, 1);
}
var bSubmit = true; // logical variable for submission test
// test drop down Dropdown14
this.getField("Dropdown14").required = false; // clear required property
if(this.getField("Dropdown14").value == "Click to rate") {
bSubmit = false;
this.getField("Dropdown14").required = true; // set required property
}
if(bSubmit) {
// your submit action;
} else {
app.alert("Not all required fields completed", 0, 1);
}
Copy link to clipboard
Copied
Here are some articles that will solve your problem:
https://acrobatusers.com/tutorials/dynamically-setting-submit-e-mail-address
https://acrobatusers.com/tutorials/popup_windows_part1
Alerts, Popups, and Other Devices for Interacting with the User
Copy link to clipboard
Copied
First of all, this code is a complete mess, lol. You should never have to write the same thing twice, Rename your fields Dropdown.0 .1 .2 etc use a loop instead.
function dropTest(){
var bSubmit = true; // logical variable for submission test
// test for dropdown menus
for (var x=0;x<=13;x++){
this.getField("Dropdown."+x).required = false; // clear required property
if(this.getField("Dropdown."+x).value == "Click to rate") {
bSubmit = false;
this.getField("Dropdown."+x).required = true; // set required property
}
}
return bSubmit
}
if(dropTest()) {
// your submit action;
} else {
app.alert("Not all required fields completed", 0, 1);
}
But your problem is you reset bSubmit to true every time you test a field. So no matter what field Is not answered, as long as the last one is, the test passes. Logically, as soon as one field fails the test, bSubmit should remain false. My code will take care of that.