如何更改Web2py自动完成小部件的“_class”

时间:2014-12-19 17:11:04

标签: web2py

我遍历一个表单对象来更改所有类:

form = crud.create(db.messages, next = URL('index'))
parts = ['title', 'body', 'subject'] # corresponding fields
classes = 'form-control col-md-12' # my classes
for p in parts:
    form.custom.widget[p]['_class'] = '%s %s' % (classes, form.custom.widget[p]['_type'])

这是有效的 - 但是:subject是一个自动完成小部件:

db.messages.subject.widget = SQLFORM.widgets.autocomplete(...)

此处_class未更改(或之后再次更改?)

如何解决这个问题? 谢谢!

1 个答案:

答案 0 :(得分:2)

自动完成小部件是一个TAG对象,它包含两个组件,第一个组件是INPUT元素。所以,做一些像:

if p == 'subject':
    form.custom.widget[p][0].add_class(classes)

注意,您可以使用add_class方法将类添加到具有现有类的元素。

此外,您可能会看到将crud.settings.formstyle设置为" bootstrap3_stacked"而不是手动更改所有类。或" bootstrap3_inline"适合你。如果没有,您还可以编写自定义formstyle函数来生成所需的确切表单布局。