2011-07-23 127 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)可能会让你感兴趣。这似乎是可能的,毕竟,我站在更正:) –