Django-crispy-forms:为AppendedText父div设置CSS类

时间:2013-10-11 11:59:30

标签: django django-forms django-crispy-forms

表单:

class StartEndDateEpayOperatorsForm(forms.Form):

    ...

    def __init__(self, *args, **kwargs):
        super(StartEndDateEpayOperatorsForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper()

        ...

        self.helper.layout = Layout(
            AppendedText('start_date', '<span class="glyphicon glyphicon-calendar"></span>', active=True, css_class='date'),
            ...
        )

表单HTML:

Example

        ...
        <div class="input-group">
            <input id="id_start_date" type="text" class="date dateinput form-control" value="2013-10-01" name="start_date"> 
            <span class="input-group-addon active">
                <span class="glyphicon glyphicon-calendar"></span>
            </span>
         </div>
        ...

为了将日历图标用作 bootstrap-datepicker 触发器,我需要将新的日期添加到 <div class="input-group">

如何使用 django-crispy-forms 实现目标?

目前 AppendedText 的属性 css_class 应用于INPUT元素而不是父DIV。

TNX!

3 个答案:

答案 0 :(得分:1)

您可以使用

self.helper.field_class = 'input-group'

这将生成带有&#39;输入组&#39;的css类。对于此表单中的所有字段。

答案 1 :(得分:1)

使用以下javascript:

 $('.datetimeinput').closest('div').datetimepicker();

最接近的div是'input-group'div。 Bootstrap-datetimepicker将负责将'date'类添加到'input-group'div。

答案 2 :(得分:1)

Daria's answer的基础上,我将id(div_id_start_date_container)传递到容器div中,如下所示:

Div(AppendedText('start_date', 
                 '<span class="glyphicon glyphicon-calendar" </span>', active=True),
    css_class='date col-sm-4 col-sm-offset-1',
    css_id='div_id_start_date_container'
),

然后我直接通过id包装它,而不是依赖closest函数。

$('#div_id_start_date_container').datepicker({
        format: "yyyy-mm-dd",
        autoclose: true,
        todayHighlight: true
    }
);

注意 - Crispy表单将为表单组创建一个名为div_id_start_date的元素,因此您需要将外部div调用为不同的内容。