Common JavaScript Errors
- Overview
- Error: Unterminated regular expression literal
- Error: Missing ) after condition
- Error: Invalid assignment left-hand side
- Error: Invalid increment operand
- Error: Invalid return
- Error: Missing ; before statement
- Error: Missing ; before statement
Overview
The document provides examples of common errors to avoid when writing JavaScript for Sage Intacct pages.
Error: Unterminated regular expression literal
Consider the following formula:
if ("{!CollTmptoPerm.name#text!}" == "SOME-TEXT"){
var f = "{!myRecords.follow_up_date#userformat!}";
var i = "{!myRecords.process_date#userformat!}";
if (f == i) return true;
var fd = ({!myRecords.follow_up_date#ms!} / (1000*60*60*24));
. . .
If follow_up_date
is a null date field, the formula is expanded as follows:
function wrapper() {
if ("Active" == "SOME-TEXT"){
var f = "";
var i = "10.05.2016";
if (f == i) return true;
var fd = ( / (1000*60*60*24));
. . .
Because a null date field expands to an empty string when the #ms
suffix is used, parseInt
must be used so that null fields are handled correctly:
var fd = (parseInt("{!myRecords.follow_up_date#ms!}") / (1000*60*60*24));
Error: Missing ) after condition
Consider the following formula:
if({!creditpayinfo.response!} == ""){
. . .
The formula is expanded as follows:
function wrapper() {
if(Status updated successfully check with cardID: 187579,amt: 2058.24 == ""){
. . .
Because fields expand without any special delimiters, you must add double quotes for string comparisons:
if("{!creditpayinfo.response!}" == "")
Error: Invalid assignment left-hand side
Consider the following formula:
var closedDate = "{!myRecords.closed_date!}";
if(({!myRecords.amount_owed!} < 0.01) && "{!myRecords.closed_date!}" = ""){
. . .
The formula is expanded as follows:
function wrapper() {
var closedDate = "";
if((413.73 < 0.01) && "" = ""){
. . .
Remember to use the equality operator (==) and not the assignment (=) operator.
"{!myRecords.closed_date!}" == "" ...
Error: Invalid increment operand
Consider the following formula:
"Check Date: "+{!lock_exception.check_date!}+"Batch:"+{!lock_exception.batch_number!}+" Item:"+{!lock_exception.item_number!}+" Check #:"+{!lock_exception.check_number!}+" Acct:"+{!lock_exception.acct_number!};
The formula is expanded as follows:
function wrapper() {
return "Check Date: "+08-10-16+"Batch:"++" Item:"++" Check #:"+67291+" Acct:"+;
}
wrapper();
As mentioned previously, use parseInt
when expanding possibly null fields.
Error: Invalid return
Consider the following formula:
<TR>
<TD><b>{!REC1207.RVENDOR!}</b></TD>
<TD>{!REC1207.leased#value!}</TD>
<TD>{!REC1207.start_date#userformat!}</TD>
<TD>{!REC1207.end_date#userformat!}</TD>
<TD>{!REC1207.monthly_payment!}</TD>
<TD>#EVAL[{
var inc = '{!REC1207.start_date#userformat!}';
var yearinc = inc.substr(6,4);
if (yearinc >= '2012') {
return {!REC1207.monthly_payment!}*12
}
}
]</TD>
</TR>
The formula is expanded as follows:
{
var inc = '11/29/2012';
var yearinc = inc.substr(6,4);
if (yearinc >= '2012') {
return $6,464.33*12
}
}
The currency field expands with full punctuation, so the #value
suffix is needed in the formula.
{!REC1207.monthly_payment#value!}*12
Error: Missing ; before statement
Consider the following formula:
"Check Date: " + {!lock_exception.check_date!} + ...
The formula is expanded as follows:
function wrapper() {
return "Check Date: "+9\u002f16\u002f2016+"
wrapper();
The date field expands into a string literal with Unicode escapes for slashes unless it is double quoted in the formula.
"{!lock_exception.check_date!}"
Error: Missing ; before statement
Consider the following formula:
var returnVal = "0.00";
returnVal = {!advance.total_paid_from_initial_advance!} - {!advance.total_reconcilled!} - {!advance.total_deducted_from_payroll!} - {!advance.total_payment_received_from_employee!} + {!advance.total_reimbursed_to_employee!};
if(returnVal == "" || returnVal == 0){
returnVal = "$0.00";
}
return returnVal;
The formula is expanded as follows:
function wrapper() {
var returnVal = "0.00";
returnVal = 0 - 1343 - 0 - 0 + ERROR: Syntax error in formula SOURCE: Formula field Travel Advance.Total Reimbursements Paid;
if(returnVal == "" || returnVal == 0){
returnVal = "$0.00";
}
return returnVal;
}
wrapper();
Here, one part of the application detects and reports the syntax error in {!advance.total_reimbursed_to_employee!}, but another part of the application uses the error as the value of the field’s expansion.