web2py中CRUD.create()函数在表单中的字段表示

3

i have this field for example

Field('yourref', type='string',
          label=T('Your reference')),

在HTML中,它被表示为一个INPUT。
<input id='table_yourref' name='yourref' value=''/>

我想要像这样展示它。
<input id='table_yourref' name='yourref' value=''/>
<a onclick='add()'>Add</a>
<a onclick='remove()'>Remove</a>

add()remove() 是 jQuery 函数,用于添加或删除字段。

1个回答

2
最好的方法可能是创建一个自定义小部件: (custom widget)
def mywidget(field, value):
    return CAT(INPUT(_name=field.name,
                     _id='%s_%s' % (field._tablename, field.name),
                     _class=field.type,
                     _value=value, requires=field.requires),
               A('Add', _onclick='add()'),
               A('Remove', _onclick='remove()'))
...

Field('yourref', type='string', label=T('Your reference'),
      widget=mywidget)

您还可以使用服务器端DOM在创建表单后将链接插入到表单中:

form = crud.create(db.mytable)
form.element('#mytable_myfield__row .w2p_fw').append(A('Add', _onclick='add()'))
form.element('#mytable_myfield__row .w2p_fw').append(A('Remove', _onclick='remove()'))

自定义小部件的优点在于它将应用于基于db.mytable创建的所有表单,而DOM方法必须分别应用于每个表单。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接