2 Replies Latest reply on Nov 21, 2017 7:24 PM by .mar

    Apply calculation to multiple forms with incrementing loop

    .mar Level 1

      Hello,

       

      What on earth am I missing here?

      I don't think foo and baa and being outputted correctly with the appropriate backslashes (escaping?).

       

      when executed I need the calculate command to be applied as:

       

      "Calculate","AFSimple_Calculate(\"PRD\", new Array (\"hx\", \"rx\"))");
      

       

      above the [x] represents the incrementing number that starts at 1, it is stored in the variable [inc], seen below.

       

      var targetArray = new Array("t1","t2","t3","t4","t5","t6","t7","t8");
      for (i = 0; i < targetArray.length; i++){
      var targetFields = this.getField(targetArray[i]);
      
      inc = i + 1;
      
      var foo = "\"\h" + inc + "\"";
      var baa = "\"\r" + inc + "\"";
      
      targetFields.setAction("Calculate","AFSimple_Calculate(\"PRD\", new Array (foo, baa))");
      
      };
      

       

      Is it because foo and baa are not being pointed to their values from the 10th line?

       

      Thanks Everyone!

       

      M

        • 1. Re: Apply calculation to multiple forms with incrementing loop
          try67 MVP & Adobe Community Professional

          Check the JS Console after changing the value of any field in the file.

          You will probably see an error message that says something like "foo is undefined".

          That is because these variables don't exist in the calculation script.

          Change the last line in your code to:

           

          targetFields.setAction("Calculate","AFSimple_Calculate(\"PRD\", new Array (\""+foo+"\", \""+baa+"\"))");
          
          1 person found this helpful
          • 2. Re: Apply calculation to multiple forms with incrementing loop
            .mar Level 1

            The colouration in syntax should've showed me that, right over my head. Thanks for your help try67, led me to the answer.

             

            With that line changed the code still didn't function as intended, for anyone interested in achieving similar results here's code of the final custom action I created, thanks to try67.

             

            var targetArray = new Array("t1", "t2", "t3", "t4", "t5", "t6", "t7", "t8");
            for (i = 0; i < targetArray.length; i++) {
              var targetFields = this.getField(targetArray[i]);
            
              inc = i + 1;
            
              var foo = "h" + inc;
              var baa = "r" + inc;
            
              app.alert(foo);
              targetFields.setAction("Calculate", "AFSimple_Calculate(\"PRD\", new Array (\""+foo+"\", \""+baa+"\"))");
            };
            

             

            M