The Artima Developer Community
Sponsored Link

Ruby Buzz Forum
ExtJS Radio Buttons and Square Brackets

0 replies on 1 page.

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 0 replies on 1 page
Edward Spencer

Posts: 148
Nickname: edspencer
Registered: Aug, 2008

Edward Spencer is a Ruby/Rails developer and the creator of the ExtJS MVC framework
ExtJS Radio Buttons and Square Brackets Posted: Aug 21, 2008 6:42 AM
Reply to this message Reply

This post originated from an RSS feed registered with Ruby Buzz by Edward Spencer.
Original Post: ExtJS Radio Buttons and Square Brackets
Feed Title: Ed's Elite blog
Feed URL: http://feeds2.feedburner.com/EdSpencer
Feed Description: Ruby on Rails development, Git issues and ExtJS/JavaScript
Latest Ruby Buzz Posts
Latest Ruby Buzz Posts by Edward Spencer
Latest Posts From Ed's Elite blog

Advertisement
While creating an ExtJS form with several radio buttons today I ran into a bug which caused none of them to work as expected, even though there were no errors/exceptions. To cut a long story short, it was because I was setting the name to "schedule[include_type]" - like this:

{
xtype: 'radio',
name: 'schedule[include_type]',
inputValue: 'page',
boxLabel: 'Show page:'
}

This radio button is one of 4, which allows the user which type of file they want to include on a particular model (a Schedule in this case) - be it Page, Video, Category or one other. The thing is - none of them work with the square brackets in the name. If you remove the brackets, they all work correctly, but the server-side is relying on those brackets to be present to group the data correctly.

In the end I bit the bullet and updated my submit method to add a new parameter directly - here's a full example:

form = new Ext.form.FormPanel({
items: [
{
xtype: 'radio',
name: 'include_type',
inputValue: 'page',
boxLabel: 'Show page:'
},
{
xtype: 'radio',
name: 'include_type',
inputValue: 'category',
boxLabel: 'Show category:'
},
... plus some extra items
],
buttons: [
{
text: 'Save',
handler: function() {

//find the currently selected include_type from the form
var include_type = this.form.getValues()['include_type'];

//note the params option - this needs to be added manually otherwhise schedule[include_type] won't appear
form.form.submit({
waitMsg: 'Saving Data...',
params: "schedule[include_type]=" + include_type,
url: some url...
});
}
}
]
})

Note: I don't usually add buttons in the way above so I'm not sure if the form.form.submit will work correctly here - see http://extjs.com/deploy/dev/docs/?class=Ext.form.FormPanel for information about overriding submit.

So what we're doing here is finding which radio button is currently checked, and appending this under "schedule[include_type]" when POSTing the form variables to the server. This really isn't pleasant but seems to be the best way around this limitation for now.

I regularly use square brackets in other Ext JS Fields - Radio Buttons seem to be the only ones that have this problem. http://extjs.com/forum/showthread.php?p=185296 has a bit of background behind this, but no real solution.

Read: ExtJS Radio Buttons and Square Brackets

Topic: What's a Good Flog Score? Previous Topic   Next Topic Topic: Named Scope: It's Not Just for Conditions, Ya Know?

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use