Skip to main content
danielr11932966
Participant
July 2, 2018
Answered

How do I have calculated scripts adjust when I spawn a new page from a template?

  • July 2, 2018
  • 2 replies
  • 1454 views

I have created a form, am able to use a calculated script to hide & unhide certain fields when a certain action is performed from a dropdown box. I have added a button to spawn from a template, but I cannot figure out how to have the calculated scripts modify themselves with the new field names.

This topic has been closed for replies.
Correct answer gkaiseril

The parameter for the "getField" method is the name of the field for which you want the JavaScript field object. The field name is just a string of characters. This string can be a quoted string, a variable with the a value of the string name, a result of some JavaScript code that results in a string value, or a combination of these.

The first snipet of code uses the "event.target.name" property to obtain the name of the field which should be from a form field that was renamed during the spawning code. So the variable "cPreFix" has the prefix items added by the spawning rename. One can the concatenate this variable to the quoted field name to create the field names on the spawned page.

var cPreFix = "";

// get prefix elements for spawned pages;

var aFieldName = event.target.name.split(".");

if(aFieldName.length > 2)

{

// first 2 elements of name array makeup the prefix for fields on a spawned page;

cPreFix = aFieldName[0] + "." + aFieldName[1] + ".";

}

if(this.getField(cPreFix + "Wave Type").value=="THROUGH TRANSMISSION")
{this.getField(cPreFix + "MHz-1").display=display.visible;
this.getField(cPreFix + "MHz-2").display=display.visible;
this.getField(cPreFix + "SN-1").display=display.visible;
this.getField(cPreFix + "SN-2").display=display.visible;
this.getField(cPreFix + "UT-2").display=display.hidden;
this.getField(cPreFix + "SN-4").display=display.hidden;
this.getField(cPreFix + "Blank-1").display=display.hidden;
this.getField(cPreFix + cPreFix + "Blank-2").display=display.visible;
this.getField(cPreFix + "Blank-3").display=display.visible;
this.getField(cPreFix + "Blank-4").display=display.visible;}

2 replies

Joel Geraci
Community Expert
Community Expert
July 3, 2018

To the degree possible, use the event object when calculating fields that are on page templates, that way you don't need to guess what the name of the field will be.

You can get the name of any spawned field using event.target.name then you can use the name to figure out the other calculations.

try67
Community Expert
Community Expert
July 2, 2018

The scripts won't modify themselves. You need to write them in advance taking this situation into account, and since the names of the spawned fields are predictable you can adjust the scripts to use the base name of the field that's being calculated (via event.source.name) to figure out the names of the other fields you're interested in.

danielr11932966
Participant
July 3, 2018

How do I accomplish this? I have seen threads stating that I need to get, here is a sample of one:

var cPreFix = "";

// get prefix elements for spawned pages;

var aFieldName = event.target.name.split(".");

if(aFieldName.length > 2)

{

// first 2 elements of name array makeup the prefix for fields on a spawned page;

cPreFix = aFieldName[0] + "." + aFieldName[1] + ".";

}

Here is a partial of my script:

if(this.getField("Wave Type").value=="THROUGH TRANSMISSION")
{this.getField("MHz-1").display=display.visible;
this.getField("MHz-2").display=display.visible;
this.getField("SN-1").display=display.visible;
this.getField("SN-2").display=display.visible;
this.getField("UT-2").display=display.hidden;
this.getField("SN-4").display=display.hidden;
this.getField("Blank-1").display=display.hidden;
this.getField("Blank-2").display=display.visible;
this.getField("Blank-3").display=display.visible;
this.getField("Blank-4").display=display.visible;}

I have this in a drop down list.

I do not understand how to incorporate the sample from the other into mine.

Thank you,

Inspiring
July 3, 2018

You have gotten the prefix for the spawned fields into a variable but you have not added that prefix variable to the specific field names strings.