2012-04-08 54 views
3

我有例如的web2py CRUD.create()字段表示

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函数来添加或删除字段

回答

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) 

您也可以使用server-side 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方法必须分别应用于每个表单。