Reputation: 349
I'm having trouble trying to get it so my Bootstrap accordion style form only has one step tab open at a time. What do I need to change to get only one tab to be open at a time?
Here is a CodePen link to the full thing. Here is a portion of my HTML:
<div id="accordion" role="tablist" aria-multiselectable="false">
<div class="card">
<div class="card-header" role="tab" id="headingOne">
<div class="mb-0">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseOne" aria-expanded="false" aria-controls="collapseOne" class="collapsed">
<h3>Step 1 of 4: Create Profile</h3>
<div class="edit-step">Edit Step</div>
</a>
</div>
</div>
<div id="collapseOne" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingOne" aria-expanded="false" style="">
<div class="card-block">
<form>
<h1>Organization</h1>
<label>Membership Category</label>
<select id="category">
<option value=""></option>
<option value="CM">Company</option>
<option value="NS">Educational</option>
<option value="GM">Government</option>
<option value="OM">Organizational</option>
<option value="IND">Individual</option>
<option value="RET">Retail</option>
</select><br><br>
<div id="continue1" class="continue-button">Continue</div><br>
</form>
</div>
</div>
</div>
<div class="card">
<div class="card-header" role="tab" id="headingTwo">
<div class="mb-0">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo" aria-expanded="false" aria-controls="collapseOne" class="collapsed">
<h3>Step 2 of 4: Payment Information</h3>
<div class="edit-step">Edit Step</div>
</a>
</div>
</div>
<div id="collapseTwo" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingTwo" aria-expanded="false">
<div class="card-block">
<form>
<h1>Organization</h1>
<br><br>
<div id="continue2" class="continue-button">Continue</div><br>
</form>
</div>
</div>
</div>
Upvotes: 2
Views: 2961
Reputation: 14201
Since you are already using jQuery in your project, you could just select all of the divs with the class panel-collapse collapse in
and remove the class in
Codepen: https://codepen.io/anon/pen/yxMyqY
$(document).ready(function(){
$("[data-parent='#accordion']").on("click", function(){
var trigger = $(this);
$(".panel-collapse.collapse.in").each(function(){
if( trigger.attr("href") != ("#"+$(this).attr("id")) ){
$(this).removeClass("in");
} // condition returns false on iteration on div to be opened
});
});
});
Upvotes: 3