Adobe form using javascirpt
I searched a lot, and do a lots of R&D on this. By this document i want to save your time to write javascript syntax.
Retrieve context structure data
var LV_DATA = xfa.resolveNode("$record.IM_TEST.FIELDNAME").value; /* Where, LV_DATA : variable to hold data IM_TEST : context structure variable (Import parameter variable) FIELDNAME : name of field in structure */
Retrieve context internal table data
var LV_DATA = xfa.resolveNode("$record.IM_TEST.DATA[" + INDX + "].FIELDNAME").value; /* Where, INDX : index of table record. (start from zero). LV_DATA : variable to hold data IM_TEST : context table variable (Import parameter variable) FIELDNAME : name of field in internal table */
OR if you are looping a table
var IMTEST = xfa.resolveNodes("$record.IM_TEST.DATA[*]"); var LV_DATA; for (var i = 0; i < IMTEST.length; i++) { LV_DATA = xfa.resolveNode("$record.IM_TEST.DATA[" + i + "].FIELDNAME").value; } /* Where, INDX : index of table record. (start from zero). LV_DATA : variable to hold data IM_TEST : context table variable (Import parameter variable) FIELDNAME : name of field in internal table */
Retrieve control (field) data
Set dynamic Caption
xfa.resolveNode(this.name + ".caption.value.#text").value = "new caption"; /* Where, this.name = name of a field. "use on initialize event */
Set dynamic reserve space of Caption
this.caption.reserve = "1in"; //use on initialize event
Hide/Visible dynamically any control
this.presence = "hidden"; //values are case sensitive //Options: visible, invisible, hidden, inactive
Get/Set form fields value
this.rawValue = "new value"; //SET var value = this.rawValue; //GET
Get current index
var INDX = this.index; var PRNTINDX = this.parent.index; //to get parent container index var PRNNTINDX = this.parent.parent.index; //to get parent container's parent index
Useful Arithmetic Operators
var y = 5; x = ++y; //x = 6 and y = 6 x = y++; //x = 5 and y = 6 x = y % 2; //division remainder x = 1
Set floating points of field
this.rawValue = (this.rawValue).toFixed(3); //Note: 3 is total no. of fraction point to display using ceiling operation
Useful Math functions
this.rawValue = Math.abs(this.rawValue); //to positive value (-1.1 to 1.1) this.rawValue = Math.ceil(this.rawValue); //to rounded upwards to the nearest integer (1.1 to 2) this.rawValue = Math.floor(this.rawValue); //to rounded downwards to the nearest integer (1.1 to 1) this.rawValue = Math.round(this.rawValue); //to the nearest integer (1.1 to 1 and 1.5 to 2)
Use Regular Expression
var reg = new RegExp(/[^0-9]/); if (reg.test("Abcd")){ //expression passed }
Set focus on filed
xfa.host.setFocus(this);
Populate Alert Message Box
xfa.host.messageBox("Helloo");
Set ToolTip of control
this.assist.toolTip.value = "toolTip text";
Set height of Sub-Form
var b = parseFloat(sfrmName.h) + 5; if (b < 0) { b = 0; } sfrmName.h = b + "mm";
Date and Time format handling
if you are using text field, write use below java script
var curDate = new Date(); var strDate = util.printd("mm/dd/yyyy HH:MM:ss", curDate);
if you are using DateTime adobe field you can directly give pattern to field.
Select DateTime Filed –> Go to property window –> click on Pattern button –> Select accordingly
Note:
mmmm | Month Name | HH | 24 hour time, leading 0 |
mmm | Abbreviated Month Name | H | 24 hour time |
mm | Numeric Month, leading 0 | hh | 12 hour time, leading 0 |
m | Numeric Month | h | 12 hour time |
dddd | Day of Week Name | MM | Minutes, leading 0 |
ddd | Abbreviated Day Name | M | Minutes |
dd | Day of Month, leading 0 | ss | Seconds, leading 0 |
d | Day of Month | s | Seconds |
yyyy | Year, 4 digits | tt | am/pm indication |
yy | Year, 2 digits | t | am/pm, single character(a/p) |
Play with Uppercase and Lowercase
this.rawValue = this.rawValue.toUpperCase(); "on initialize event convert to uppercase this.rawValue = this.rawValue.toLowerCase(); "on initialize event convert to lowercase //Using Interactive Scenario (Automatic live case conversion) xfa.event.change = xfa.event.change.toUpperCase(); "on change event convert to uppercase xfa.event.change = xfa.event.change.toLowerCase(); "on change event convert to lowercase
Boolean function
var check = Boolean(10 > 9); "returns True var check = (10 > 9); "returns True var check = 10 > 9; "returns True
Font customization (control/caption)
this.font.typeface = "Courier"; //font family (font name) this.font.size = "30pt"; //font size this.font.weight = "bold"; //font weight (bold | normal) this.font.posture = "italic"; //font style (italic | normal) this.fontColor = "0,0,0"; //font color (RR,GG,BB) this.fillColor = "153,153,153"; //control background color (RR,GG,BB) this.font.baselineShift = "10px"; //shift font up/down (10/-10) //for caption you can you below, this.caption.font.fill.color.value = "255,255,255"; //most other properties are same, ex this.caption.font.*
Cancel Printing
data::prePrint - (JavaScript, client) xfa.event.cancelAction = 1;
HTML Rich Text Rendering
var envelope = "" + "" + "
“+ this.rawValue +”
"; this.value.exData.loadXML(envelope,1,1); //Note: use on docClose event and load pdf dynamically.
Loop through all controls (fields) in adobe forms
Loop through all controls (fields) in adobe forms
A lot more to explore, will share with you soon.
Best Regards.
Prajesh Desai
New NetWeaver Information at SAP.com
Very Helpfull