簡體   English   中英

使用jQuery顯示/隱藏bootstrap手風琴面板

[英]show/hide bootstrap accordion panel with jQuery

我有一個手風琴。 現在,我只想在特定情況下啟用panel 當我的一個面板有效時,只有另一個面板才should be collapsible

<div class="panel-group" id="accordion">
    <div class="panel panel-default">
        <div class="panel-heading">
            <h4 class="panel-title">
                <a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">Collapsible Group
                    Item #1 </a>
            </h4>
        </div>
        <div id="collapseOne" class="panel-collapse collapse in">
            <form id="myform" action="" method="post"> //when this form is valid, then open the collapseTwo panel
            <div class="panel-body">
                <input type="text" id="txtName" name="txtName" />
                <br />
                <input type="text" id="txtCountry" name="txtCountry" />
                <br />
                <input id="btn" type="submit" name="submit" value="Submit" />
                <br />
            </div>
            </form>
        </div>
    </div>
    <div id="clickMe" class="panel panel-default"> // this will remain closed unless the above form is not valid
        <div class="panel-heading">
            <h4 class="panel-title">
                <a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo">Collapsible Group
                    Item #2 </a>
            </h4>
        </div>
        <div id="collapseTwo" class="panel-collapse collapse">
            <div class="panel-body">
                //Some data
            </div>
        </div>
    </div>

</div>

<script type="text/javascript">
    $(document).ready(function () {

        $("#myform").validate({
            rules: {
                txtName: {
                    required: true
                },
                txtCountry: {
                    required: true
                }
            }
        });

        $("#myform").valid();

        $('#clickMe').on('shown.bs.collapse', function (e) {     //i click on the panel header

            if ($('#myform').valid()) {   //now if the first panel(which contains form) is valid
               $('#collapseTwo').collapse('show');    //then show the clicked panel
            }
            else {
                $('#collapseTwo').collapse('hide');  //else always keep it hidden/locked
                alert('form invalid');
            }
        })
    });
</script>

小提琴

這與它實際應如何運作不符。

應當對fallingTwo面板進行鎖定,並顯示一條警告消息,指出collapseOne面板無效。 如果表單有效,則應為折疊的默認行為。

顯示面板后,您正在檢查:

$('#clickMe').on('shown.bs.collapse', function (e) {

而是使用show方法:

$('#clickMe').on('show.bs.collapse', function (e) {

也有其他事情在發生,但這只是一個開始。


更新:發現了另一個問題...無需強制崩潰行為。 僅在必要時防止它。

if (!$('#myform').valid()) {
    return false;
}

演示

使用默認的折疊方法顯示和隱藏

顯示

$("#collapseOne").collapse('show');

隱藏

$("#collapseOne").collapse('hide');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM