A table (Table "G") in a form I (said newbie) 'inherited' has the below script that is supposed to programmatically check fields prior to submission so the user can be directed to take corrective action(s). The table is optional unless either an amount is entered, or a radio button is selected.
function oneLineTable(ERROR_MESSAGES, tableLetter, tableName){
i=0; // set the counter
var TEXT;
while (xfa.resolveNode(tableName + ".ROW" + "[" + i + "]")!=null){
TABLE_ROW = tableName + ".ROW" + "[" + i + "]";
J_AMOUNT = xfa.resolveNode(TABLE_ROW).J_FUNDS.rawValue;
// The following switch handles differences in Tables C, E, F, and G
switch (tableLetter) {
case "C" : {
TEXT = xfa.resolveNode(TABLE_ROW).MATCHINGGRANTNAME.rawValue;
J_AMOUNT = xfa.resolveNode(TABLE_ROW).J_FUNDS.rawValue;
break;
}
case "E" : {
TEXT = xfa.resolveNode(TABLE_ROW).GRANTNAME.rawValue;
J_AMOUNT = xfa.resolveNode(TABLE_ROW).J_FUNDS.rawValue;
break;
}
case "F" : {
TEXT = xfa.resolveNode(TABLE_ROW).RECIPIENT.rawValue;
J_AMOUNT = xfa.resolveNode(TABLE_ROW).J_FUNDS.rawValue;
break;
}
case "G" : {
TEXT = xfa.resolveNode(TABLE_ROW).SALARYTYPE.rblSALARYTYPE.OFFICER.rawValue;
TEXT = xfa.resolveNode(TABLE_ROW).SALARYTYPE.rblSALARYTYPE.REPLACEMENT_OFFICER.rawValue;
TEXT = xfa.resolveNode(TABLE_ROW).SALARYTYPE.rblSALARYTYPE.MATCH_SAL.rawValue;
TEXT = xfa.resolveNode(TABLE_ROW).SALARYTYPE.rblSALARYTYPE.OVERTIME.rawValue;
J_AMOUNT = xfa.resolveNode(TABLE_ROW).J_FUNDS.rawValue;
break;
}
}
if (TEXT == null && J_AMOUNT != null) {
ERROR_MESSAGES+=" ● Enter Type/Amount on Table " + tableLetter + ", row "+ (i+1) + ".\u000d\u000a";
}
if ((J_AMOUNT == null || J_AMOUNT == 0) && TEXT != null) {
ERROR_MESSAGES+=" ● Enter a dollar value for Table " + tableLetter + ", row "+ (i+1) + ".\u000d\u000a";
}
if ((i != 0) && (J_AMOUNT == null && TEXT == null)) { // not first row
ERROR_MESSAGES+=" ● Row "+ (i+1) +" on Table " + tableLetter + " is empty.\u000d\u000a";
}
else {
if ((xfa.resolveNode(tableName + ".ROW" + "[" + i+1 + "]")!=null) && // is first row and more than one row
(J_AMOUNT == null && TEXT == null)) { // and first row is empty
ERROR_MESSAGES+=" ● Row "+ (i+1) +" on Table " + tableLetter + " is empty.\u000d\u000a";
}
} // end else
i+=1;
} // End While
return (ERROR_MESSAGES);
} // End of function oneLineTable
The script is only performing correctly for the first of the four possible radio button selections ('Overtime'):
Here are a few examples of the error messages the script is currently incorrectly displaying.
The 2nd bullet item should say 'Enter a dollar value for Table G, row 2.' (instead it erroneously says 'Row 2 on Table G is empty.').
The 3rd bullet item shouldn't be displaying at all (instead it erroneously says 'Enter Type/Amount on Table G, row 4.').
Please let me know how the script must be modified so that errors are correctly displayed for the remaining three possible amount entries and radio button selections. The other tables ('C', 'E', 'F') are okay and the entries are optional.
PMB
Message was edited by: PMBInc, updated screenshot
Message was edited by: PMBInc, clarified/added more detail to problem description.
Solved! Go to Solution.
Views
Replies
Total Likes
Figured out that "||" (or) had to be inserted into the syntax, therefore this:
TEXT = xfa.resolveNode(TABLE_ROW).SALARYTYPE.rblSALARYTYPE.REPLACEMENT.rawValue;
TEXT = xfa.resolveNode(TABLE_ROW).SALARYTYPE.rblSALARYTYPE.MATCH_SAL.rawValue;
TEXT = xfa.resolveNode(TABLE_ROW).SALARYTYPE.rblSALARYTYPE.OVERTIME.rawValue;
TEXT = xfa.resolveNode(TABLE_ROW).SALARYTYPE.rblSALARYTYPE.OFFICER.rawValue;
...needed to be changed to this:
TEXT = xfa.resolveNode(TABLE_ROW).SALARYTYPE.rblSALARYTYPE.REPLACEMENT.rawValue || xfa.resolveNode(TABLE_ROW).SALARYTYPE.rblSALARYTYPE.MATCH_SAL.rawValue || xfa.resolveNode(TABLE_ROW).SALARYTYPE.rblSALARYTYPE.OVERTIME.rawValue || xfa.resolveNode(TABLE_ROW).SALARYTYPE.rblSALARYTYPE.OFFICER.rawValue;
Thank you. PMBInc
Views
Replies
Total Likes
Figured out that "||" (or) had to be inserted into the syntax, therefore this:
TEXT = xfa.resolveNode(TABLE_ROW).SALARYTYPE.rblSALARYTYPE.REPLACEMENT.rawValue;
TEXT = xfa.resolveNode(TABLE_ROW).SALARYTYPE.rblSALARYTYPE.MATCH_SAL.rawValue;
TEXT = xfa.resolveNode(TABLE_ROW).SALARYTYPE.rblSALARYTYPE.OVERTIME.rawValue;
TEXT = xfa.resolveNode(TABLE_ROW).SALARYTYPE.rblSALARYTYPE.OFFICER.rawValue;
...needed to be changed to this:
TEXT = xfa.resolveNode(TABLE_ROW).SALARYTYPE.rblSALARYTYPE.REPLACEMENT.rawValue || xfa.resolveNode(TABLE_ROW).SALARYTYPE.rblSALARYTYPE.MATCH_SAL.rawValue || xfa.resolveNode(TABLE_ROW).SALARYTYPE.rblSALARYTYPE.OVERTIME.rawValue || xfa.resolveNode(TABLE_ROW).SALARYTYPE.rblSALARYTYPE.OFFICER.rawValue;
Thank you. PMBInc
Views
Replies
Total Likes
Views
Likes
Replies
Views
Likes
Replies