I have 6 buttons controlling 6 identically sized text boxes contained in a single subform.
If the user clicks on button 1, textbox 1 is unhidden. If button 2 is clicked, textbox 2 is unhidden and textbox 1 is hidden etc etc.
I'm presently using an "if else" statement to hide and unhide textboxes like this:
if (button.rawValue == "1")
{
TextField1.presence = "visible";
}
else
{
TextField1.presence = "hidden";
TextField2.presence = "hidden";
TextField3.presence = "hidden";
TextField4.presence = "hidden";
TextField5.presence = "hidden";
TextField6.presence = "hidden";
}
What I'm wondering is if there is some way of saying
if (button.rawValue == "1"), all other items in this subform are hidden
Is that possible with JS?
Graham
Solved! Go to Solution.
Views
Replies
Total Likes
Hi Graham
If you are willing to change your text fields so they have the same name there are then a number of ways you can refer to them as a group, so if your subform containing the buttons and text fields was called SubForm and the text fields were all called TextField then then "SubForm.TextField.all" will return a list of all the text fields.
Then if you have a function like;
function set(subForm, index)
{
var textFields = subForm.TextField.all;
for (i = 0; i < textFields.length; i++)
{
if (textFields.item(i).index == index)
{
textFields.item(i).presence = "visible";
}
else
{
textFields.item(i).presence = "invisible";
}
}
}
And in each button click call the function with;
set(SubForm, this.index);
The function will make visible the text field that has the same index as the button that was clicked.
Bruce
Views
Replies
Total Likes
Just hide the subform .....subformName.presence = "invisible"
Paul
Views
Replies
Total Likes
Paul,
But I am trying to always show one of the 6 textboxes inside the subform.
I guess what I'm trying to say is if there's some way to cut down on the lines of code, or am I always going to have to say something to the effect of
"if line one is visible,
then hide line 2
hide line 3
hide line 4
hide line 5
hide line 6"
I'd like to say
"if line one is visible,
then hide all else"
That would be a lot less code to write.
Graham
Views
Replies
Total Likes
Hi Graham
If you are willing to change your text fields so they have the same name there are then a number of ways you can refer to them as a group, so if your subform containing the buttons and text fields was called SubForm and the text fields were all called TextField then then "SubForm.TextField.all" will return a list of all the text fields.
Then if you have a function like;
function set(subForm, index)
{
var textFields = subForm.TextField.all;
for (i = 0; i < textFields.length; i++)
{
if (textFields.item(i).index == index)
{
textFields.item(i).presence = "visible";
}
else
{
textFields.item(i).presence = "invisible";
}
}
}
And in each button click call the function with;
set(SubForm, this.index);
The function will make visible the text field that has the same index as the button that was clicked.
Bruce
Views
Replies
Total Likes
Nice bit of code Bruce.
I was giving this problem some thought, and figured something could be done with a loop but my javascript-fu still needs some work.
Views
Replies
Total Likes