I apologize if this is a basic and simple question but I have been pulling my hair out for the last week trying to get this to work and Google is getting sick and tired of my questioning them for answers. This shouldn't be that difficult but I'm not a designer, nor a programmer, I'm just a tech trying to make my people's lives easier, so yes, I brought this upon myself.
I have converted an InDesign form that has a bunch of check boxes into a LiveCycle document. I want the check boxes when they are checked to assign a value to it's assocated variable. In the form properties I have set up the global variables and assigned the value of each to "0".
For the check box I have set the change method/property to have the following code:
if (topmostSubform.Page1.Back_Cover.rawValue==1)
BC.value=6300;
else
BC.value=0;
I have a textbox that I am trying to take all of these values and based on what is checked and what is not it should calculate the total for that field. Here is the code I have for calculating the text value using the calculate method/property:
premium.rawValue = BC.value + IFC.value + IBC.value; //there are three check boxes associated with this value
However, no matter what I do no values seem to get assigned to the BC variable.
Can someone please point me in the right direction as to why this isn't working?
Thank you very much.
Tom
Solved! Go to Solution.
Views
Replies
Total Likes
Hi,
I think Steve is right, you want to avoid using global (or form) variables in this case, especially in the calculate event as any changes in there value wont cause a recalculation. I would also try and keep all the calculation logic in the one place. So in the calculate event of the premium field I would put the following JavaScript;
this.rawValue = (Back_Cover.rawValue === "On") ? 6300 : 0;
this.rawValue += (Inside_Front_Cover.rawValue === "On") ? 5775 : 0;
this.rawValue += (Inside_Back_Cover.rawValue === "On") ? 5350 : 0;
Note the on/off values of your checkboxes are the strings "On" and "Off".
Bruce.
p.s. Nice looking form
Views
Replies
Total Likes
Hi Tom,
Try
if (topmostSubform.Page1.Back_Cover.rawValue==1) then
BC.value=6300;
else
BC.value=0;
endif
That is with a "then" and an "endif"
Also, make sure you have "Show console on errors and messages" in Acrobat/Reader JavaScript preferences.
Regards
Bruce
Views
Replies
Total Likes
I originally had that and various threads and forums pushed me to the above format. Regardless, I changed it and still have a zero value for the premium.rawValue when I do the calculation.
For a little more information, when I enter values for the variables in the Form Properties, the premium.rawValue does calculate everything correctly so it seems to be a problem with reassigning the value to the global variable.
Thanks for your response.
Tom
Views
Replies
Total Likes
Hi, I guess I assumed you were using FormCalc but are you using JavaScript. Maybe it would be easier to understand what is happening if you could publish the form somewhere and provide a link in this thread. Bruce
Views
Replies
Total Likes
Did you to keep message boxes or alerts in the loop.and try to display the global values.
Views
Replies
Total Likes
Sorry, I have been out a while due to surgery but I'm back on track now.
I have uploaded this file to my dropbox account and it is available here.
I have only put code in for the first couple of checkboxes and the textbox to the right of it. I don't know why it isn't updating the global variables. I also upgraded my version of LiveCycle to ES2 wondering if that could be the problem...it isn't.
Any insight into what I'm doing wrong would be greatly appreciated.
Thanks for your patience.
Tom
Views
Replies
Total Likes
Drop box is blocked for me.
rawValue is not changed yet in the change event. You need to use xfa.event.newText.
The global variable thing seems a waste to me. Can't you just reference the rawValue of each check box in the calculate event of the text field?
Views
Replies
Total Likes
I guess I'm not understanding...sorry.
I'm using a check box to set a value, i.e. if checkbox1 is checked then value a=100, if checkbox2 is checked then value b=300 therefore the calculate of textbox1=value a + value b (400). I used the change event for the checkboxes to assign the values and the calculate event of the textbox to total everything up but when I tried to do it locally it didn't work and I read a posting saying that I had to use global variables so, hence, I headed that way.
Thanks
Views
Replies
Total Likes
Hi,
I think Steve is right, you want to avoid using global (or form) variables in this case, especially in the calculate event as any changes in there value wont cause a recalculation. I would also try and keep all the calculation logic in the one place. So in the calculate event of the premium field I would put the following JavaScript;
this.rawValue = (Back_Cover.rawValue === "On") ? 6300 : 0;
this.rawValue += (Inside_Front_Cover.rawValue === "On") ? 5775 : 0;
this.rawValue += (Inside_Back_Cover.rawValue === "On") ? 5350 : 0;
Note the on/off values of your checkboxes are the strings "On" and "Off".
Bruce.
p.s. Nice looking form
Views
Replies
Total Likes
Thank you very much for your assistance. This was exactly what I needed/was looking for. I knew that it had to be something simple/logical that I was missing. I like your coding, very streamlined.
Thanks again.
Views
Replies
Total Likes
Views
Likes
Replies