I have a static PDF registration form that I am working on using LiveCycle Designer 8.2. I would like to learn how to have a radiobutton list reset when a particular check box is unchecked.
When registering for the event, users have the option of attending 1 of the 4 optional afternoon workshop sessions. I have successfully made the workshop radiobuttons hidden until the check box is checked using the following code:
(check box is named "Reg4" -- this is where they say "yes" I'm going to attend 1 of the 4 workshops,
radiobutton list of the 4 workshops is named "RadioButtonList3")
topmostSubform.Page1.Reg4::change - (JavaScript, client)
if (this.rawValue == "0") {
this.resolveNode("RadioButtonList3").presence = "hidden";
When the user unchecks the "Reg4" checkbox after they have selected 1 of the 4 workshops, that radiobutton is still checked.
What I'm looking for is to have the radiobutton list reset (or again hidden) when the Reg4 button is unchecked (after previously being checked).
I hope my description is clear. Is this possible?
Views
Replies
Total Likes
You can set the radiobutton with "":
RadioButtonList3.rawValue = "";
Your if statement should work, but the zero shouldn't be in quotes:
if (this.rawValue == 0) {
this.resolveNode("RadioButtonList3").presence = "hidden";
}
You would normally do this as part of the script you're using to to show the radiobuttons:
if (this.rawValue == 1) {
RadioButtonList3.presence = "visible";
}
else {
RadioButtonList3.presence = "hidden";
}
Views
Replies
Total Likes
Thanks for the reply, Jono.
What I like about your code is that it brings up a message when the user clicks the Reg4 check box
"RadioButtonList3 cannot be left blank."
But, if the user 1) checks the Reg4 check box; then 2) selects one of the radio buttons; then 3) unchecks the Reg4 check box, the radiobutton is still selected.
What I'm looking for is after the check box is checked and then unchecked, the radiobutton list is cleared or hidden.
Does this sound doable?
Views
Replies
Total Likes
Just saw that I was the one that added the error message :-)
Here's the code:
topmostSubform.Page1.RadioButtonList3::calculate - (FormCalc, client)
if (Reg4 == "0") then
RadioButtonList3.access = "readOnly"
RadioButtonList3.mandatory = "disabled"
else
RadioButtonList3.access = "open"
RadioButtonList3.mandatory = "error"
endif
I welcome all ideas on getting this list to hide/reset. Thanks!!
Views
Replies
Total Likes
To clear it as well you need to add the: rawValue = ""
if (Reg4 == "0") then
RadioButtonList3.rawValue = ""
RadioButtonList3.access = "readOnly"
RadioButtonList3.mandatory = "disabled"
else
RadioButtonList3.access = "open"
RadioButtonList3.mandatory = "error"
endif
Views
Replies
Total Likes
Thanks, Jono. This is so close!
It didn't work when I changed the code to match your above suggestion but it did when I added the rawValue line to the Reg4 code:
topmostSubform.Page1.Reg4::change - (JavaScript, client)
if (this.rawValue == 1) {
RadioButtonList3.presence = "visible";
}
else {
RadioButtonList3.rawValue = ""
RadioButtonList3.presence = "hidden";
}
Now, when the user unchecks the Reg4 checkbox the radiobuttons reset but are no longer hidden. This means they can select one and that cannot be an option for them. (In this case, it appears to the user that if they have a radiobutton selected then they are going to be registered for an event but this is in fact not true. They are only registered if the Reg4 box is checked.)
I assumed the "else...hidden" would have taken care of that.
Do I have a syntax error or is it something else?
I'm a newbie learning as I go and I appreciate all of your time helping me with this!
Views
Replies
Total Likes
You need a semicolon at the end of: RadioButtonList3.rawValue = "";
JavaScript statements need a semicolon at the end. FormCalc statements don't
Sorry, you were bouncing between JavaScript and FormCalc and I didn't notice that the FormCalc code was on the calculate event for the radio buttons - I'd get rid of that and drive it all from the checkbox.
Views
Replies
Total Likes
I like your suggestion of combining the scripts (much cleaner document) but now I'm moving further away from the goal.
When I run this, the radiobuttons are available when I first preview but then are hidden when I select the Reg4 checkbox. Also, the message no longer shows up (not a biggie but not sure why it went away).
When I read this in layman's terms, to me it says if Reg4 is checked then radiobuttons are visible, open for input & error message is mandatory. Otherwise, radios are blank, the fields are hidden, access is readonly, and the error message is disabled.
Do I really need all of those line of script, especially, in the else section? Or am I required to balance the lines on the if and else sections?
topmostSubform.Page1.Reg4::change - (JavaScript, client)
if (this.rawValue == 1) {
RadioButtonList3.presence = "visible";
RadioButtonList3.access = "open";
RadioButtonList3.mandatory = "error";
}
else {
RadioButtonList3.rawValue = "";
RadioButtonList3.presence = "hidden";
RadioButtonList3.access = "readOnly";
RadioButtonList3.mandatory = "disabled";
}
Views
Replies
Total Likes
Because you had some script on the radio buttons make sure you get rid of all that script so nothing is interfering.
This script should make the radio buttons visible on checking the checkbox and then hidden on unchecking the checkbox. If the radio buttons are showing by default you need to set them to hidden on the Object palette.
It's possible the values of the checkbox might have been changed, the default is 0 = Off and 1 = On. So check on the Binding tab of the Object palette and see what the values are.
You can take the readOnly and open statements out as they aren't really needed because you are hiding the radio buttons. But basically, everything you turn on (or off) needs to be turned off (or on) again.
So, the following should work as long as the value for the On state of the chcckbox is equal to 1.
if (this.rawValue == 1) {
RadioButtonList3.presence = "visible";
RadioButtonList3.mandatory = "error";
}
else {
RadioButtonList3.rawValue = "";
RadioButtonList3.mandatory = "disabled";
RadioButtonList3.presence = "hidden";
}
Views
Replies
Total Likes
Makes sense that anything you turn on/off, you must also turn off/on.
There is no script on RadioButtonList3.
The off value in Reg4 Binding is set to 0.
I did a copy/paste of your suggestion above so I didn't make any typos.
When I change the radiobutton field presence to hidden, they don't show up when I click Reg4.
Unfortunately, the radiobuttons do not hide but do reset when unclicking Reg4.
Also it doesn't tell me that the radiobuttonlist cannot be blank which I thought that's what the "mandatory=error" line makes happen.
Here's what I have for Reg4 (and nothing for radiobuttonlist):
topmostSubform.Page1.Reg4::change - (JavaScript, client)
if (this.rawValue == 1) {
RadioButtonList3.presence = "visible";
RadioButtonList3.mandatory = "error";
}
else {
RadioButtonList3.rawValue = "";
RadioButtonList3.mandatory = "disabled";
RadioButtonList3.presence = "hidden";
}
Very frustrating. Are static pages able to have hidden fields?
I appreciate all of your time on this. Just not sure what to try at this point.
Views
Replies
Total Likes
Ah, I guess it's the static pdf...thought hiding a field would still work. I don't deal with static pdfs much. Just tried it and that seems to be the problem.
In which case I think you're limited to controlling the access and mandatory settings.
if (this.rawValue == 1) {
RadioButtonList3.access = "open";
RadioButtonList3.mandatory = "error";
}
else {
RadioButtonList3.rawValue = "";
RadioButtonList3.mandatory = "disabled";
RadioButtonList3.access = "readOnly";
}
Views
Replies
Total Likes
Thank you again, Jono, for your reply. I was worried that the Static PDF was the trouble but I just couldn't take no for an answer!
If you're willing, I'd be happy to send you my file but am unable to post publicly.
In an earlier version the RadioButtonList3 is hidden when first viewing the file. It was done using FormCalc. (I know you said don't mix the languages but, hey, it worked!) Also, I found a post you had last year in the discussion "Prompt User to click checkbox (radio button)" where you described a message box using Java. I snagged that and put it on the enter event of the Reg4 field.
When I preview the PDF, this is what I now have:
#1 RadioButtonList3 will hide only if it has not been selected and reset first.
#2 The warning message only appears the first time Reg4 is checked.
These 2 items somehow seem related. Is there something that tells it "use this code when you first open the document but act differently once you've started checking boxes" so it only acts as I intend on the first go-around?
Here's all of my code:
- - - - - - - - - - -
topmostSubform.Page1.RadioButtonList3::calculate - (FormCalc, client)
if (Reg4 == "0") then
RadioButtonList3.access = "readOnly"
else
RadioButtonList3.access = "open"
endif
- - - - - - - - - - -
topmostSubform.Page1.Reg4::change - (JavaScript, client)
if (this.rawValue == 1) {
RadioButtonList3.presence = "visible";
}
else {
RadioButtonList3.rawValue = "";
RadioButtonList3.presence = "hidden";
}
topmostSubform.Page1.Reg4::enter - (JavaScript, client)
if (RadioButtonList3.rawValue == "") {
xfa.host.messageBox("You will be registered for an Optional Workshop ONLY if this box is checked. Don't forget to tell us which workshop you will be attending.");
this.rawValue == null;
}
- - - - - - - - - - -
So sorry for the lengthy post. I'm open to any ideas that anyone may have.
This certainly is a learning experience!
Views
Replies
Total Likes
Yeah unfortunately it is the static pdf, so there's not much you can do about it unless you redo the form as dynamic.
You can mix FormCalc and JavaScript, just not on the same event.
Views
Replies
Total Likes
Thanks for all of your help, Jono. I appreciate all of the time you spent helping me out.
Views
Replies
Total Likes
Views
Likes
Replies
Views
Likes
Replies
Views
Likes
Replies