Getting the value of a Radio Button in Xpages.
Category Xpages
This is a long story for a relatively short answer. Sorry about that...
Recently I was working on a test XPage application and wanted to have a page that would let the users fill out some fields and then it would create a document in the "backend" using server side Javascript and send the document to a team HelpDesk e-mail account. I would not be saving this document in the application.
On this page I wanted to have a simple Radio button with the choices Low, Medium, and High. The user would choose the level of their problem and I'd include that in the e-mail. However, I hadn't used Radio Buttons up to that point. Especially in the case that I wasn't really saving the XPage. I only wanted to get the value to the backend document that would be mailed.
I had some problems trying to figure out how to get the value. You see, when you're dealing with individual radio buttons on an XPage, each option is it's own component and when you drop them on a page each has it's own unique name. This is not like the Notes Client where you have one Field of the type "Radio" with multiple options inside it. Hmmm.. I know in traditional Javascript you need to iterate through a control looking for the checked property. But what do you do here?
I first tried to get the value of the selected button by trying to do a getComponent on the group name.
var choice = getComponent("groupName")
Well that didn't get me to far. So I shouted out on twitter and got some good suggestions. The best might have been to ask Matt "Mr. XPages" White himself, but really this has to be solvable by us mere mortals. Paul Hannan noticed that I didn't have "getValue" at the end of my statement. Whoops. I do keep forgetting that so I gave this a try:
var choice - getComponent("groupName").getValue()
Still no Joy. Declan suggesting I look at the Domino Designer Wiki which I did go back to. There's some articles on Radio Buttons but they seem to be talking about a Control in the Other Controls section called a Radio Group. I still don't know what that is. Something to do with not having hard coded values but looking them up from a view I think. That didn't seem right so I moved on.
Back to playing with my XPage I noticed that even though I didn't really want this page bound to a Notes Form, it was telling me to. These radio buttons wanted to be bound to something. Ok who am I to argue with DDE? So I created a form and bound the 3 radio buttons in the group to the same field.
That's when something really interesting happened! I tried this code:
var choice1 = getComponent("radio1").getValue();
var choice2 = getComponent("radio2").getValue();
var choice3 = getComponent("radio3").getValue();
And guess what? Each variable contained the SAME value. So to get the Value of a radio button in XPages, just get the value of ANY of the controls in a Radio Group!
How cool is that? No looping to find a value like in normal JavaScript.
XPages are like wives. They can be frustrating at times, but at the end of the day, you're glad to be with them.
This is a long story for a relatively short answer. Sorry about that...
Recently I was working on a test XPage application and wanted to have a page that would let the users fill out some fields and then it would create a document in the "backend" using server side Javascript and send the document to a team HelpDesk e-mail account. I would not be saving this document in the application.
On this page I wanted to have a simple Radio button with the choices Low, Medium, and High. The user would choose the level of their problem and I'd include that in the e-mail. However, I hadn't used Radio Buttons up to that point. Especially in the case that I wasn't really saving the XPage. I only wanted to get the value to the backend document that would be mailed.
I had some problems trying to figure out how to get the value. You see, when you're dealing with individual radio buttons on an XPage, each option is it's own component and when you drop them on a page each has it's own unique name. This is not like the Notes Client where you have one Field of the type "Radio" with multiple options inside it. Hmmm.. I know in traditional Javascript you need to iterate through a control looking for the checked property. But what do you do here?
I first tried to get the value of the selected button by trying to do a getComponent on the group name.
var choice = getComponent("groupName")
Well that didn't get me to far. So I shouted out on twitter and got some good suggestions. The best might have been to ask Matt "Mr. XPages" White himself, but really this has to be solvable by us mere mortals. Paul Hannan noticed that I didn't have "getValue" at the end of my statement. Whoops. I do keep forgetting that so I gave this a try:
var choice - getComponent("groupName").getValue()
Still no Joy. Declan suggesting I look at the Domino Designer Wiki which I did go back to. There's some articles on Radio Buttons but they seem to be talking about a Control in the Other Controls section called a Radio Group. I still don't know what that is. Something to do with not having hard coded values but looking them up from a view I think. That didn't seem right so I moved on.
Back to playing with my XPage I noticed that even though I didn't really want this page bound to a Notes Form, it was telling me to. These radio buttons wanted to be bound to something. Ok who am I to argue with DDE? So I created a form and bound the 3 radio buttons in the group to the same field.
That's when something really interesting happened! I tried this code:
var choice1 = getComponent("radio1").getValue();
var choice2 = getComponent("radio2").getValue();
var choice3 = getComponent("radio3").getValue();
And guess what? Each variable contained the SAME value. So to get the Value of a radio button in XPages, just get the value of ANY of the controls in a Radio Group!
How cool is that? No looping to find a value like in normal JavaScript.
XPages are like wives. They can be frustrating at times, but at the end of the day, you're glad to be with them.
- 


Comments
TIA
Posted by Lou Gerritse At 09:40:50 PM On 11/04/2009 | - Website - |
Posted by Delcea Mihai At 04:57:19 AM On 11/06/2009 | - Website - |