2011-07-23 165 views
1

我已手風琴這樣設置jQuery UI的手風琴無效點擊

$(".accordion-form").accordion({ 
    collapsible:false, 
    autoHeight: false, 
    changestart: checkChanged, 
    change: function(e, ui) {active = $(".accordion-form").accordion("option", "active");}, 
    active: 0 
}); 

活性是一個靜態變量,它總是具有活性的內容。

我想要做的是在一個激活的點擊之前啓用標題,並且激活之後的標題已被禁止點擊。

通過這種方式,我可以讓手風琴像一個形式的行爲,以「你可以回去,但沒有向前直到你完成這部分」。

任何幫助,將不勝感激

+1

如果不依賴於手風琴小部件的內部部件(假設甚至可能不修改小部件本身),這將是相當困難的。也就是說,恕我直言手風琴爲連續步驟提供了一個很差的隱喻(它們更適合並行替代品)。我可能會建議一個[嚮導](http://wiki.jqueryui.com/w/page/23314826/Wizard)? –

回答

2

雖然我弗雷德裏克同意,手風琴不是這種行爲的一個偉大的小工具,你應該能夠用一些簡單的JS做到這一點。附加其他的「onClick」處理程序手風琴頭,並將其殺死的事件,如果頭是沿太遠

$('.accordion-form .ui-accordion-header').click(function(e) { 
    if($(this).index() > current_section.index()) 
    { 
     e.stopImmediatePropagation(); 
    } 
}); 

這需要你有一個current_section變量保存最後一節完成(我假設你已經有了這樣的東西),並且確保這個處理程序在JqueryUI手風琴設置之後(或之前)被附加,所以你的處理程序首先被調用。

希望這會有所幫助!

+0

爲了讓'$(「。ui-accordion-header」)'匹配任何東西,你必須等到*'accordion()'之後的*被調用。因此,根據[這個問題](http://stackoverflow.com/q/2360655/464709),你的'click'處理程序將被調用得太晚(因爲click處理程序是按照它們綁定的順序調用的),除非你重新排列數據(「事件」)。 –

+0

如果我使用changestart函數來檢查if Xavier是否提議 – gvalero87

+0

@ gvalero87,[它在jQuery UI 1.9之前不會運行](http://bugs.jqueryui.com/ticket/6651),但是有一種解決方法[here](http://stackoverflow.com/questions/2004869/jquery-accordion-prevent-pane-from-opening-cancel-changestart-event/2005149#2005149)可能會讓你感興趣。這似乎是可能的,畢竟,我站在更正:) –