Dreamwalker
Dreamwalker

Reputation: 3035

Using radio buttons for tab control using bootstrap

I am trying to control tabs with radio buttons to change a content area for a scheduling screen. This works fine other than the radio buttons do not check.

Anyone got any ideas how to fix this?

<div>
    <div>
        <input id="optDaily" name="intervaltype" checked type="radio" data-target="#scheduleDaily" data-toggle="tab">
        <label for="optDaily">Daily</label>
    </div>
    <div>
        <input id="optWeekly" name="intervaltype" type="radio" data-target="#scheduleWeekly" data-toggle="tab">
        <label for="optWeekly">Weekly</label>
    </div>
    <div>
        <input id="optMonthly" name="intervaltype" type="radio" data-target="#scheduleMonthly" data-toggle="tab">
        <label for="optMonthly">Monthly</label>
    </div>
</div>

<div class="tab-content">
    <div id="scheduleDaily" class="tab-pane active schedule-pane" >
        Daily
    </div>

    <div id="scheduleWeekly" class="tab-pane schedule-pane" >
        Weekly
    </div>

    <div id="scheduleMonthly" class="tab-pane schedule-pane" >
        Montly
    </div>
</div>

Here is the example in jsfiddle http://jsfiddle.net/nEWMq/

Upvotes: 23

Views: 36869

Answers (3)

Yevgeniy Afanasyev
Yevgeniy Afanasyev

Reputation: 41300

Bootstrap 4.3.1 working tabs as radio buttons

$(document).ready(function () {
  $('input[name="intervaltype"]').click(function () {
      $(this).tab('show');
      $(this).removeClass('active');
  });
})
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script> 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script> 


<div class="nav nav-tabs" role="tablist">
<div>
    <input id="optDaily" checked name="intervaltype" type="radio" data-target="#scheduleDaily">
    <label for="optDaily">Daily</label>
</div>
<div>
    <input id="optWeekly" name="intervaltype" type="radio" data-target="#scheduleWeekly">
    <label for="optWeekly">Weekly</label>
</div>
<div>
    <input id="optMonthly" name="intervaltype" type="radio" data-target="#scheduleMonthly">
    <label for="optMonthly">Monthly</label>
</div>
</div>
<div class="tab-content">
    <div id="scheduleDaily" class="tab-pane active">Daily</div>
    <div id="scheduleWeekly" class="tab-pane">Weekly</div>
    <div id="scheduleMonthly" class="tab-pane">Montly</div>
</div>

Upvotes: 12

Monzur
Monzur

Reputation: 1435

Try this works for me

<script src="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
<link href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet" type="text/css" />

<div class="container">
	<div class="row">
		<div class="span12">
			<p class="lead">Bare minimum radio button tabs example:</p>

			<div id="tab" class="btn-group" data-toggle="buttons">
				<a href="#prices" class="btn btn-default active" data-toggle="tab">
                    <input type="radio" />Prices</a>
				<a href="#features" class="btn btn-default" data-toggle="tab">
                    <input type="radio" />Features</a>
				<a href="#requests" class="btn btn-default" data-toggle="tab">
                    <input type="radio" />Requests</a>
				<a href="#contact" class="btn btn-default" data-toggle="tab">
                    <input type="radio" />Contact</a>
			</div>

			<div class="tab-content">
				<div class="tab-pane active" id="prices">Prices content</div>
				<div class="tab-pane" id="features">Features Content</div>
				<div class="tab-pane" id="requests">Requests Content</div>
				<div class="tab-pane" id="contact">Contact Content</div>
			</div>
		</div>
	</div>
</div>

Upvotes: -1

Adam Taylor
Adam Taylor

Reputation: 4839

The radio buttons aren't getting checked because of this code:

e.preventDefault()

To fix this, remove data-toggle="tab" from the radio buttons and then add this jQuery code:

$('input[name="intervaltype"]').click(function () {
    $(this).tab('show');
});

Upvotes: 31

Related Questions