Zgodnie z tym pytaniem: "Twitter Bootstrap 3 Zwiń, kiedy zaznaczono zaznaczenie pola wyboru" Próbowałem tego rozwiązania, ponieważ jest proste i czyste.

http://jsfiddle.net/l0h3s7UF/1/

<div class="panel-group driving-license-settings" id="accordion">
    <div class="panel panel-default">
        <div class="panel-heading">
             <h4 class="panel-title">
                                      <div class="checkbox">
                <label data-toggle="collapse" data-target="#collapseOne">
                    <input type="checkbox"/> I have Driver License  
                </label>
            </div>
                                  </h4>

        </div>
        <div id="collapseOne" class="panel-collapse collapse in">
            <div class="panel-body">
                <div class="driving-license-kind">
                    <div class="checkbox">
                        <input type="checkbox" value="">A</div>
                    <div class="checkbox">
                        <input type="checkbox" value="">B</div>
                    <div class="checkbox">
                        <input type="checkbox" value="">C</div>
                    <div class="checkbox">
                        <input type="checkbox" value="">D</div>
                    <div class="checkbox">
                        <input type="checkbox" value="">E</div>
                </div>
            </div>
        </div>
    </div>
</div>

Ale z tym "rozwiązaniem" masz problem. Jeśli klikniesz zaznacz pole wyboru, obszar jest zawalony, ale zaznaczone jest pole wyboru.

Jak mogę zapobiec temu podwójnym kliknięciu?

Ja używam:

  • Bootstrap 3.
  • jQuery 3.1.1.
2
Niklas Raab 27 czerwiec 2017, 10:41

3 odpowiedzi

Najlepsza odpowiedź

Ponieważ nie ma dwukrotnego kliknięcia w Bootstrap, aby przełączyć specjalnie, więc wymyślam specjalną pracę, aby dokonać dwukrotnego kliknięcia z synchronizacji.

Właśnie usunięłem data-toggle="collapse" atrybut, dodano #testCheckBox ID , aby zaznaczyć rodziców div i zrobiłem jakiś niestandardowy skrypt, który wykrył, jeśli kliknij dwukrotnie kliknięcie, a następnie zatwierdź pole wyboru Wartości i przełączanie ich baz:

$('.collapse').collapse();

$("#testCheckBox :checkbox").bind('click dblclick', function(evt) {
    console.log(evt.type);

    if ($(this).is(":checked")) {
        $('.collapse').slideDown('fast');
    } else {
        $('.collapse').slideUp('fast');
    }
})

DEMO: https://jsbin.com/ciloliweto/edit?html , wyjście.

4
mumair 27 czerwiec 2017, 09:13

Myślę, że to zadziała dla ciebie

$('.collapse').collapse()
$("#check").one('click', function (event) {  
           event.preventDefault();
           //do something
        
     });
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<style>
.panel-body {
    padding: 4px 50px;
}
</style>
     
    <div class="panel-group driving-license-settings" id="accordion">
        <div class="panel panel-default">
            <div class="panel-heading">
                 <h4 class="panel-title">
                                          <div class="checkbox">
                    <label data-toggle="collapse" data-target="#collapseOne" aria-expanded="false" aria-controls="collapseOne">
                        <input type="checkbox" id="check"/> I have Driver License  
                    </label>
                </div>
                                      </h4>

            </div>
            <div id="collapseOne" class="panel-collapse collapse in">
                <div class="panel-body">
                    <div class="driving-license-kind">
                        <div class="checkbox">
                            <input type="checkbox" value="">A</div>
                        <div class="checkbox">
                            <input type="checkbox" value="">B</div>
                        <div class="checkbox">
                            <input type="checkbox" value="">C</div>
                        <div class="checkbox">
                            <input type="checkbox" value="">D</div>
                        <div class="checkbox">
                            <input type="checkbox" value="">E</div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
-1
aditya shrivastava 27 czerwiec 2017, 08:40

Wyłącz pole wyboru podczas zawalania:

http://jsfiddle.net/l0h3s7UF/220/

<input id="license_check_box" type="checkbox"/> I have Driver License   

$('.collapse').on('show.bs.collapse hide.bs.collapse', function() {
    $('#license_check_box').prop('disabled', true);
}).on('shown.bs.collapse hidden.bs.collapse', function() {
    $('#license_check_box').prop('disabled', false);
});
1
Ian Metten 27 czerwiec 2017, 09:05