Skip to main content
Participant
October 9, 2008
Question

JavaScript Validation to Submit Form

  • October 9, 2008
  • 9 replies
  • 29608 views
Hi,

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!
    This topic has been closed for replies.

    9 replies

    Participant
    January 20, 2011

    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 lot
    try67
    Community Expert
    Community Expert
    January 20, 2011

    Look at the method getNthFieldName in conjunction with the numFields

    property of the Document object.

    Participant
    January 20, 2011

    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"});
        }
    }

    Inspiring
    March 4, 2009
    The two actions are independent, so if the first action sets anything or fails the second action will have no knowledge of that situation and the second action will be executed.

    There is information about the "submitForm()" method in the Acrobat JavaScript API, which is part of the SDK.
    Participant
    January 29, 2010

    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

    try67
    Community Expert
    Community Expert
    January 29, 2010

    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.

    Participant
    March 4, 2009
    Sorry - that got clipped. Are you saying that I need to write the submit action out in javascript in the validation action above? Is there a sample somewhere that I can use?
    Participant
    March 4, 2009
    Hi Geo - thanks, but I'm still confused. I'm in the same boat as Jason above: On my button "Mouse Up" Event there are two "Actions":
    - 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;
    }
    Inspiring
    March 4, 2009
    The button's actions are independent so if you want a condition to be meet before submission, you must do all of that within one complete block of JavaScirpt code action and not 2.
    Participant
    March 4, 2009
    (Sorry in advance - I'm new at this)
    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?
    Participant
    February 17, 2009
    Change the comparison operator from != to ==, and field name TR to something else and you should be fine.

    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;
    }
    Participant
    February 17, 2009
    I would like further information on the same point. I have built a form with "required" fields. By default, when the submit button is pushed, a message pops up preventing the form from being submitted because the "required" fields are empty. However, in the same mouse click button I am also endeavoring to make all the fields "Read Only" so that when the document is processed, the values are not easily changed (submission is as a PDF, not FDF).

    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;
    }
    Participant
    February 12, 2018

    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;

    }

    Bernd Alheit
    Community Expert
    Community Expert
    February 12, 2018

    This are field names.

    Inspiring
    October 9, 2008
    The "Required" property works in conjunction with a "submit" to a web server script page. If you want to use this feature for check "required" fields before submitting, you must write the JavaScirpt to check the specific fields or all the fields that support the "requried' property and determine if they have been completed as necessary.