django crispy forms accordion issue

大城市里の小女人 提交于 2019-12-11 23:04:51

问题


I have simple Accordion below:

I want to setup active=True or active=False conditionally basing on value which is on reason_yes and reason_no fileds:

def __init__(self, *args, **kwargs):
    super(MyUpdateForm, self).__init__(*args, **kwargs)
    self.helper = FormHelper(self)
    self.helper.layout = Layout(

        TabHolder(
            Tab(
                'Tab1',
                Accordion(
                    AccordionGroup(
                                   Field('reason_yes'),
                                   active=False
                    ),
                    AccordionGroup(
                                   Field('reason_no'),
                                   active=True
                    )
                )
            ),
            Tab(
                'Tab2',
                Field('other fileds')
            )
        ),
        FormActions(
            Submit('save_changes', 'Save changes', ),
            Button('cancel', 'Cancel', onclick="window.history.back()"),
        )
    )

回答1:


Finally I ended up with jQuery like below

var reasonYesValue = $('#id_reason_yes option:selected').val();
var reasonNoValue = $('#id_reason_no option:selected').val();
if (reasonYesValue == 'N/A' & reasonNoValue != 'N/A') {
    $('#yes-id').removeClass('in');
    $('#no-id').addClass('in').prev('.panel-heading').addClass('activeTab');
}
else {
    $('#yes-id').prev('.panel-heading').addClass('activeTab');
}
$('.panel-group')
    .on('show.bs.collapse', function (e) {
        $(e.target).prev('.panel-heading').addClass('activeTab');
    })
    .on('hide.bs.collapse', function (e) {
        $(e.target).prev('.panel-heading').removeClass('activeTab');
    });


来源:https://stackoverflow.com/questions/33673313/django-crispy-forms-accordion-issue

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!