Copy link to clipboard
Copied
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.
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 spawnin
...Copy link to clipboard
Copied
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.
Copy link to clipboard
Copied
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,
Copy link to clipboard
Copied
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.
Copy link to clipboard
Copied
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;}
Copy link to clipboard
Copied
That helped me through what I needed to accomplish. Thank you very much!
Daniel
Copy link to clipboard
Copied
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.