Ok, so I want to use a list box to control which form fields on my page are visible or hidden. I have no problem creating the list box and adding items to the list but haven't been able to figure out what scripting I need to connect each selection to the relevant form field I want it to control.
So essentially I want to know what javascript is necesary to be able to let the end user select one or more items from the listbox and have those fields become visible on the page. How do I do this?
Solved! Go to Solution.
Views
Replies
Total Likes
Had a look at your code and you ended the for loop before you ran all of your tests. The if statements musty be inside the for loop. I modified your code (reformatted it a bit so it is easier to read) and included it here.
Paul
Views
Replies
Total Likes
The 1st thing is to get the value that the user selected in the listbox and to choose an event to execute your code. I woudl recommend the exit event rather than the change event (the user has committed to the value when he exits the field). To get the value of the listbox use the command:
this.rawValue
The "this" refers to the object that is running the script.
Now to make other objects visible or invisible you can use the objects name and then the presence property. So the command woudl look like this:
ObjectName.presence = "visible"
Now that you have the basic commands you will need to evaluate what the user chose and act accordingly. So the command woudl look like this:
if (this.rawValue == "thing you want to check for"){
Fieldname.presence = "visible";
FieldName2.presence = "visible";
} else {
Fieldname.presence = "invisible";
Fieldname2.presence = "invisible"
}
If you have lots of selections in th edrop down list then you may want to look at a Select statement instead of nesting many if statements.
Paul
This is helpful but when I try it, it doesn''t work. How do I script the select statement. I'm using a list box, not a drop down list just to clarify. I want the user to be able to make multiple selections from the list. How do I write the script so that it checks for each item thats selected and then makes that item visible or hidden depending on whether its been selected?
I've attached an example of the document, If you could look at it and tell me what I'm doing wrong I'd appreciate it.
Views
Replies
Total Likes
Ok so here is my work up to this point. The biggest sticking point is the listbox problem I'm having. I need the user to be able to select multiple items from the list box and have those fields revealed or hidden based on what is or isn't selected. So far it only half works. When you make the selections you want and then tab to the next field it hides all the fields associated with the list box and doesn't reveal the selected ones.
Also at the end of the second page is a button that is supposed to create another instance of the first two pages. And as far as I can tell there should be no limit to it. However this does not work at all.
And just because I'm guessing it will become a problem, assuming I do at some point get the add pages button working. How do I make sure the reset form button only applies to the two page spread that its located on?
I've included the file I'm working on. I'd appreciate any help or advice you have on how to make this work and show me what I'm doing wrong.
Thanks,
Aaron
Views
Replies
Total Likes
If you create a multiselct list then the rawValue will return a string separated by Carriage returns so all of your fi statements will never match. You can use javascript to split the string into individual values and put them into an array. Then test each individual string in the array through your if statements.
The code wouls look something like this:
//set a var to hold the selections
var temp =this.rawValue;
//split the selection based on the CR char
var tempArray = temp.split("\x0A");
//debug step to make sure we got all the selections
app.alert(tempArray.length);
//run through each selection
for (i=0;i<=tempArray.length;i++){
temp = tempArray[i];
//debug step to see that we have a single selection
app.alert(temp)
//Note that you must change your code to test the temp variable instead of the selection in the list
if (temp == "Aura")
{flexsubform.aura.presence = "visible";}
else
{flexsubform.aura.presence = "hidden";}
if (temp == "Defensive Abilities")
{flexsubform.defensiveabilities.presence = "visible";}
.......
I tried your code, and for the second debug step I get back an alert that says "undefined". This is of course causing the rest of it to not work. But I'm not sure what is wrong about it. I'm not familiar with working with arrays, and the books I've looked at so far aren't terribly helpful.
Also I asked about it in a previous post but at the bottom of the last page in my pdf I put a button to add an instance of the first two pages, effectively to continue making the pdf longer if needed. I added the script I found in my book but it doesn't work. Either I'm doing it wrong or what I got from my book is incomplete. Could you look at that and see what I've done wrong as well?
I do really appreciate the help you've provided so far, it's been very illuminating.
Aaron
Views
Replies
Total Likes
Had a look at your code and you ended the for loop before you ran all of your tests. The if statements musty be inside the for loop. I modified your code (reformatted it a bit so it is easier to read) and included it here.
Paul
Views
Replies
Total Likes
What you did works, sort of. When you select more than one item it runs through them and only the last selection works. Although if I hide all the "else" statements and change all the starting qualities of those form fields to "hidden", then it works. I had hoped to be able to show and hide with the multi select list box but maybe thats not easily possible. Do you know of a way to not just hide the previous after checking the next?
But otherwise thankyou very much for your help, you're a lifesaver.
Aaron
Views
Replies
Total Likes
Views
Likes
Replies
Views
Likes
Replies
Views
Likes
Replies