jQuery provides us a rich set of UI controls to be used in our sites like (Datepicker, Tabs, Accordion etc.). Accordion allow us to accommodate more than one panels in one control . Each panel may have different data to display, but at a time we can show only one panel . At one time our concern was to flip the Accordion panel using external button say “Next” and “Prev” buttons.
Solution : Change the active panel programmatically is a simple work to do . We have to simply activate the panel by :
wizard.accordion(“activate”, index);
In the demo application I have taken 4 panel Accordion and two buttons “Previous” and “Next” to change the Accordion page.
In the same way we can also take “First” and “Last” buttons , Particular Panel dropdown etc.
Copy paste the following code in a file and save it with .html extension . Run in browser (Allow block content for IE) :
Demo Accordion #accordion{padding:5px;width:50%;} var gCurrentIndex = 0; // global variable to keep the current index; var ACCORDION_PANEL_COUNT = 3; //global variable for panel count. Here 3 is for zero based accordion index $(document).ready(function () { wizard = $("#accordion").accordion({ event: 'click', active: 0, autoheight: true, animated: "bounceslide", icons: { 'header': 'ui-icon-plus', 'headerSelected': 'ui-icon-minus' }, change: function (event, ui) { gCurrentIndex = $(this).find("h4").index(ui.newHeader[0]); } }); //Bind event for previous and next buttons $('.previous,.next').click(function () { var index = 0; if ($(this).hasClass('next')) { index = gCurrentIndex + 1; if (index > ACCORDION_PANEL_COUNT ) { index = ACCORDION_PANEL_COUNT; } } else { index = gCurrentIndex - 1; if (index < 0) { index = 0; } } //Call accordion method to set the active panel wizard.accordion("activate", index); }); });
Tab1 1
panel 1
Tab 2
panel 2
Tab 3
panel 3
Tab 4
panel 4
Conclusion :
When we have a need of wizard type of solution in our project like Registration process, Account creation etc , try using accordion with custom navigation buttons (like above). We can get the same functionalities of wizard control and without postback !