8

Я пытался использовать группу кнопок (в соответствии с инструкциями по меньшей http://getbootstrap.com/javascript/#buttons), а затем разобрать их значения в сдвинутой массив:Код для установки/неустановленные кнопки флажок в Bootstrap 3.0

кодекса баттона-группа

<div class="btn-group" id="weekdays" data-toggle="buttons"> 
    <label class="btn btn-default"> 
     <input type="checkbox" >Mo 
    </label> 
    <label class="btn btn-default"> 
     <input type="checkbox">Tu 
    </label> 
    <label class="btn btn-default"> 
     <input type="checkbox">We 
    </label> 
    </div> 
</div> 

Код для считывания значений

$("#weekdays ").change(function(event){ 

    var checkedDays = $("#weekdays :checkbox").map(function(){ 
     return $(this).is(':checked') ? 1 : 0; 
    }).get(); // <---- 

    var sun = checkedDays.pop(); 

    checkedDays.unshift(sun); 

    console.log(checkedDays); 
}); 

До сих пор так хорошо. (Даже если я уверен, что код может быть лучше написан.)

Однако моя проблема возникает, когда я пытаюсь сделать set значения флажков программно и получить их отражение в пользовательском интерфейсе. Мне удалось изменить значения флажков, используя ряд методов $(this).prop('checked', true) и т. Д., Которые, похоже, обновляют значения резервной копии, но ничего не меняют внешний вид кнопок.

Я видел ряд решений, но ни один из них не работает с рекомендуемым способом Bootstrap 3.0 для установки флажка btn-group. у кого-нибудь есть решение?

ответ

11

Если вы используете редактор DOM при нажатии на кнопки Bootstrap, вы увидите, что при нажатии кнопки на метку (а не на флажке) будет добавлен класс active.

Чтобы программно переключать кнопки, используйте метод Bootstrap .button('toggle') на этикетке:

$('#weekdays label').eq(n).button('toggle'); 

http://jsfiddle.net/mblase75/4NVvj/

Это изменит как внешний вид кнопки и checked свойства флажка внутри.

6

В подобном случае, что работал для меня это:

$('#checkBoxId').trigger("click"); 

Что делает именно то, что вы хотите.

PS. Не уверен, что это лучше, но тогда я работал для меня.

+0

Я не могу заставить это работать, но спасибо за ваш ответ! – uvesten

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