Highlighted

JavaScript Help / if else statement / regular expression

pmcalex

09-06-2008

I have a form where the Client Last Name is bound to a data source. I need to provide a copy of the form to a particular person depending upon which letter of the alphabet the Client Last Name begins with (e.g., Carol gets a copy of forms where the client last name begins with A-G, Karen gets a copy of forms where the client last name begins with H-Pe, etc.). I want the correct persons name to appear in the copy notation of the form. I've tested my regular expressions and they are working correctly. I seem to be having trouble when I get to the else if statement in my script.

Can anyone help with this?



Here is my script:

// Show correct FLU Agent according to Client Last Name

var FLU1 = /(^[A-G])/

var FLU2 = /(^[H-O]|P[a-e])/

var FLU3 = /(^P[f-z]|[Q-Z])/



if (FLU1.test(xfa.resolveNode("form1.dbObjects.clientLastName").rawValue)== true);

{

this.rawValue = "Carol";

}

else if (FLU2.test(xfa.resolveNode("form1.dbObjects.clientLastName").rawValue)== true);

{

this.rawValue = "Karen";

}

else if (FLU3.test(xfa.resolveNode("form1.dbObjects.clientLastName").rawValue)== true);

{

this.rawValue = "Cathy";

}

Replies

Highlighted

_SekharN_

09-06-2008

In your case all you need to use is just if conditions.... because only one of them will be true any time and no need to use else.



var FLU1 = /(^[A-G])/

var FLU2 = /(^[H-O]|P[a-e])/

var FLU3 = /(^P[f-z]|[Q-Z])/



if (FLU1.test(xfa.resolveNode("form1.dbObjects.clientLastName").rawValue)== true);

{

this.rawValue = "Carol";

}

else if (FLU2.test(xfa.resolveNode("form1.dbObjects.clientLastName").rawValue)== true);

{

this.rawValue = "Karen";

}

else if (FLU3.test(xfa.resolveNode("form1.dbObjects.clientLastName").rawValue)== true);

{

this.rawValue = "Cathy";

}
Highlighted

pmcalex

09-06-2008

Thank you for the response:-) I'm using Adobe LiveCycle v8. I removed the two "else if" and replaced with "if", but now it always executes the last line of code, "Cathy" (even though condition is false).

I tested each variable again and only Carol returns true on the Client Last Name I am using.



Does anyone know what else is wrong in my script?



var FLU1 = /(^[A-G])/

var FLU2 = /(^[H-O]|P[a-e])/

var FLU3 = /(^P[f-z]|[Q-Z])/



if (FLU1.test(xfa.resolveNode("form1.dbObjects.clientLastName").rawValue)== true);

{

this.rawValue = "Carol";

}

if (FLU2.test(xfa.resolveNode("form1.dbObjects.clientLastName").rawValue)== true);

{

this.rawValue = "Karen";

}

if (FLU3.test(xfa.resolveNode("form1.dbObjects.clientLastName").rawValue)== true);

{

this.rawValue = "Cathy";

}
Highlighted

_SekharN_

10-06-2008

try the following...removed unwanted semicolon(s)....



var FLU1 = /(^[A-G])/

var FLU2 = /(^[H-O]|P[a-e])/

var FLU3 = /(^P[f-z]|[Q-Z])/



if (FLU1.test(xfa.resolveNode("form1.dbObjects.clientLastName").rawValue)== true)

{

this.rawValue = "Carol";

}

if (FLU2.test(xfa.resolveNode("form1.dbObjects.clientLastName").rawValue)== true)

{

this.rawValue = "Karen";

}

if (FLU3.test(xfa.resolveNode("form1.dbObjects.clientLastName").rawValue)== true)

{

this.rawValue = "Cathy";

}
Highlighted

gkaiseril

10-06-2008

Have you tried trimming your test string to the number of characters in the RegExp?



// Show correct FLU Agent according to Client Last Name

var FLU1 = /^([A-G][a-z])$/;

var FLU2 = /^([H-O][a-z]|P[a-e])$/;

var FLU3 = /^(P[f-z]|[Q-Z][a-z])$/;



if (HasValue(xfa.resolveNode("form1.dbObjects.clientLastName") {

var NameString = xfa.resolveNode("form1.dbObjects.clientLastName").rawValue.substring(0,2);



switch (true) {



case (FLU1.test(NameString) 😞

this.rawValue = "Carol";

break;



case (FLU2.test(NameString) 😞

this.rawValue = "Karen";

break;



case (FLU3.test(NameString) 😞

this.rawValue = "Cathy";

break;



default:

app.alert("Unknown Last name: " + this.getField("clientLastName").value, 1, 1);

this.rawValue = "";

break;

}// end switch



} else {

this.rawValue ='';

} // end if HasValue



You also might want to consider the 'switch(){}" statement since it skips all following test once a test, case, has been meet and allows for a default action when none of the above tests are met.



I have also added code to prevent running the script when there is no inputted value to the last name.



I have not tested the code for LiveCycle Designer but modified it from AcroForms JavaScript.