JavaScript Validation to Submit Form
Copy link to clipboard
Copied
How do you validate all the fields in JavaScript when the user clicks the Submit button so that if any required fields are empty or any field validation fails, nothing (submission, JavaScript code, execute menu items, etc.) will be executed? I found something about execValidate() but it didnt work for me. It wouldnt do anything. I am using Adobe Acrobat Professional 8.0.
For instance, I have a field set up to accept numbers between 1111 and 9999. If the user enters 1 and tabs out of the field, he gets an error message and the value is deleted. The field is also set as a required field. But if the user clicks the Submit button, all JavaScript code will be executed, menu items too. The only thing that fails is "Submit a Form" only for the required field part. What can I include in the JavaScript code to check if all fields are valid, according to their corresponding rules, and if yes, continue to execute all the other actions. If not, cancel all and let user make the necessary changes.
Thank you for your help!
Copy link to clipboard
Copied
Copy link to clipboard
Copied
I basically need to be able to not mark a required field as Read Only if it contains no data, but I'm having trouble figuring out the code. Here is what I have so far...
On my button "Mouse Up" Event there are two "Actions":
- Run a Java Script
- Submit a form
The Java script is very simple...
I basically need to understand the code for checking the values before marking them read only.
I tried to build a check of just one field first (since I have a total of 10 to check) thinking if I get one right, then I can modify it for the rest. I tried an IF statement, but my syntax is wrong. Please help.
var S = this.getField("TR.Name").value;
If (S!="") {
app.alert("You must fill in all required fields before submitting.");
} else
{var T = this.getField("TR");
var F = this.getField("FD");
T.readonly = true;
F.readonly = true;
}
Copy link to clipboard
Copied
just learning here:
What does the "DR" and "FR" represent in this code? Are they field names?
else
{
var T = this.getField("DR");
var F = this.getField("FD");
T.readonly = true;
F.readonly = true;
}
Copy link to clipboard
Copied
This are field names.
Copy link to clipboard
Copied
var S = this.getField("TR.Name").value;
if (S =="")
{
app.alert("You must fill in all required fields before submitting.");
T.readonly = false;
F.readonly = false;
}
else
{
var T = this.getField("DR");
var F = this.getField("FD");
T.readonly = true;
F.readonly = true;
}
Copy link to clipboard
Copied
I'm using a button with two actions - the javascript above and submit a form. However, when the validation fails (the required field is not filled in), the user simply clicks "ok" and then is able to submit the form anyway. Is there a way to prevent the user from submitting the form when the validation fails?
Copy link to clipboard
Copied
Copy link to clipboard
Copied
- Run a Java Script
- Submit a form
This is what I have now for javascript:
var S = this.getField("Signature").value;
if (S =="Off")
{
app.alert("You must check the signature box before submitting.");
T.readonly = false;
F.readonly = false;
}
Are you saying that my submit action needs to be written into the javascript above? Can I get a sample somewhere?
else
{
var T = this.getField("DR");
var F = this.getField("FD");
T.readonly = true;
F.readonly = true;
}
Copy link to clipboard
Copied
Copy link to clipboard
Copied
There is information about the "submitForm()" method in the Acrobat JavaScript API, which is part of the SDK.
Copy link to clipboard
Copied
Hello Everyone,
I like this script and was hoping I could get some help. I would just like to incorporate multiple required fields. I'm no export programmer (I'm sure its obvious by looking by example). Any suggestions!?
var S = this.getField("test1").value;
var Q = this.getField("test2").value;
if (S =="") and (Q =="")
{
app.alert("You must fill in all required fields before submitting.");
T.readonly = false;
F.readonly = false;
}
else
{
var T = this.getField("DR");
var F = this.getField("FD");
T.readonly = true;
F.readonly = true;
}
Thank you,
CJ
Copy link to clipboard
Copied
Problem 1:
Change this line:
if (S =="") and (Q =="")
To this:
if ((S =="") && (Q ==""))
Problem 2:
You are trying to access T and F in the first block without declaring them.
I suggest you declare them at the beginning of the script, after S and Q.
Copy link to clipboard
Copied
(also, you should open a new thread, not hijack this one)
Copy link to clipboard
Copied
Wow, thank you for your quick reply. I'll give you what you suggested a shot.
Also thanks for the tip on forum etiquette (still new)...sorry.
Thank you,
CJ
Copy link to clipboard
Copied
anybody know if is there any way of getting an arrayList with the whole Fields in the form? It would be great if I we could going through the structure in the same way we can do it in Javascript and HTML with "getElementsByTagName" instead of creating an array of Strings with all the fields' names and doing this.getField("...") for each one
Thanks a lotCopy link to clipboard
Copied
Look at the method getNthFieldName in conjunction with the numFields
property of the Document object.
Copy link to clipboard
Copied
ok thank you a lot, it seems works fine 😉
This is my code:
//this part is for validate all the fields in document by sections
//Validation methods throws alerts in case of error and focus the cursor on the wrong field
var okres=validarSolicitante();
if (okres=="ok"){
okres="";
okres=validarOtrosDatos();
}
if (okres=="ok"){
okres="";
okres=validarFirma();
}
//After validation, if is all is correct we show a confirm message and proceed to submit the form
if (okres=="ok"){
var nButton = app.alert({cMsg: "¿Está seguro de que desea enviar los datos del formulario?",
cTitle: "Confirmación de envÃo", nIcon: 2, nType: 2});
if ( nButton == 4 ) {
var campos = new Array();
var f;
var pos = 0;
//app.alert("nCampos del formulario:" + this.numFields);
//we collect all the fields into an array
for ( var i=0; i < this.numFields; i++) {
var fname = this.getNthFieldName(i);
f = this.getField(fname);
if ( f.type != "button" ){
campos[pos] = fname;
pos++;
}
}
/*we can show with alerts that all is ok
app.alert("Array de campos:" + campos.length);
for ( var i=0; i < campos.length ; i++) {
f = this.getField(campos);
app.alert("(" + i + ") " + campos + " = " + f.value);
}
*/
//and submit the form
this.submitForm({cURL: "https://www...", bEmpty: true, aFields: campos, cSubmitAs: "FDF"});
}
}

