Skip navigation
Currently Being Moderated

JavaScript Validation to Submit Form

Oct 9, 2008 12:44 PM

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!
 
Replies
  • Currently Being Moderated
    Oct 9, 2008 12:48 PM   in reply to (New_User)
    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.
     
    |
    Mark as:
  • Currently Being Moderated
    Feb 17, 2009 10:09 AM   in reply to (New_User)
    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;
    }
     
    |
    Mark as:
  • Currently Being Moderated
    Feb 17, 2009 10:40 AM   in reply to (New_User)
    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;
    }
     
    |
    Mark as:
  • Currently Being Moderated
    Mar 4, 2009 9:00 AM   in reply to (New_User)
    (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?
     
    |
    Mark as:
  • Currently Being Moderated
    Mar 4, 2009 9:46 AM   in reply to (New_User)
    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.
     
    |
    Mark as:
  • Currently Being Moderated
    Mar 4, 2009 9:54 AM   in reply to (New_User)
    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;
    }
     
    |
    Mark as:
  • Currently Being Moderated
    Mar 4, 2009 9:55 AM   in reply to (New_User)
    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?
     
    |
    Mark as:
  • Currently Being Moderated
    Mar 4, 2009 11:03 AM   in reply to (New_User)
    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.
     
    |
    Mark as:
  • Currently Being Moderated
    Jan 29, 2010 7:18 AM   in reply to GKaiseril

    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

     
    |
    Mark as:
  • Currently Being Moderated
    Jan 29, 2010 7:22 AM   in reply to cjsmile2106

    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.

     
    |
    Mark as:
  • Currently Being Moderated
    Jan 29, 2010 7:23 AM   in reply to cjsmile2106

    (also, you should open a new thread, not hijack this one)

     
    |
    Mark as:
  • Currently Being Moderated
    Jan 29, 2010 7:58 AM   in reply to Gilad D (try67)

    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

     
    |
    Mark as:
  • Currently Being Moderated
    Jan 20, 2011 4:26 AM   in reply to (New_User)

    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
     
    |
    Mark as:
  • Currently Being Moderated
    Jan 20, 2011 5:08 AM   in reply to camagupa

    Look at the method getNthFieldName in conjunction with the numFields

    property of the Document object.

     
    |
    Mark as:
  • Currently Being Moderated
    Jan 21, 2011 5:46 AM   in reply to Gilad D (try67)

    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[i]);
                app.alert("(" + i + ") " + campos[i] + " = " + f.value);
            }
            */


            //and submit the form

            this.submitForm({cURL: "https://www...", bEmpty: true, aFields: campos, cSubmitAs: "FDF"});
        }
    }

     

     
    |
    Mark as:

More Like This

  • Retrieving data ...

Bookmarked By (0)