2016-09-17 2 views
1

Я использую Boostrap 3.3.7 и пытаюсь использовать кнопки в качестве «Radio Button».Bootstrap ButtonGroup Select 1 Только кнопка

Это HTML:

<div id="selector" class="btn-group" data-toggle="buttons-radio"> 
    <button name="resolution" class="btn btn-default btn-sm"> 
     720 
    </button> 
    <button name="resolution" class="btn btn-default btn-sm"> 
     480 
    </button> 
    <button name="resolution" class="btn btn-default btn-sm"> 
     360 
    </button>  
</div> 

Когда я выбираю одну кнопку, а затем выберите другой, то первый не получает снят. Я попытался отменить его с JQuery, но это не сработало:

$('.btn-group > .btn').removeClass('active')  
$('.btn-group > .btn').eq(0).addClass('active') 

Как я могу убедиться, что я держу один выбран только? Моя цель - выбрать одну кнопку, чтобы я мог ее использовать. Что-то вроде этого:

$("#submitButton").click(function() { 
         alert($('.btn-group > .btn.active').text()); 
        }); 

ответ

2

Для того, чтобы поддерживать активную кнопку тока вы можете делегировать событие щелчка, чтобы избежать распространения событий и кнопки изменения состояния.

Так сниппет является:

$(document).on('click', '[name="resolution"]', function(e) { 
 
    e.stopPropagation(); 
 
    
 
    // add class active to current button and remove it from the siblings 
 
    $(this).toggleClass('active') 
 
     .siblings().not(this).removeClass('active'); 
 
}) 
 

 

 
// for test purposes 
 
$(function() { 
 
    $('#myBtn').on('click', function(e) { 
 
    console.log('Active button: ' + $('.btn-group > .btn.active').text()); 
 
    }) 
 
});
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
 
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
 

 
<div id="selector" class="btn-group" data-toggle="buttons-radio"> 
 
    <button name="resolution" class="btn btn-default btn-sm"> 
 
     720 
 
    </button> 
 
    <button name="resolution" class="btn btn-default btn-sm"> 
 
     480 
 
    </button> 
 
    <button name="resolution" class="btn btn-default btn-sm"> 
 
     360 
 
    </button> 
 
</div> 
 
<button id="myBtn" class="btn">Click Me To debug</button>

+0

Гаэтано @ когда я делаю это, тревога (. $ ('БТН-группа> .btn.active') текст()); больше не дает значения. Он дает пустую строку. – RonaDona

+0

@RonaDona: теперь я добавил эту функцию: если вы снова нажмете на той же кнопке, состояние изменится с активного на неактивное. Это позволит вам отменить выбор самой кнопки. Дайте мне знать, если на этот раз он работает так, как вы хотите. Еще раз спасибо – gaetanoM

+0

yep, все хорошо. Работает как шарм! – RonaDona

Смежные вопросы