在web2py自定义表单中添加单选按钮
我想在一个自定义表单中把一个字段显示成单选按钮组。我希望每个单选按钮都放在表格的不同行上。问题是,当我使用 {{=form.custom.selection_type[0]}}
时,生成的控件被包裹在了不需要的 tr
和 td
标签里。有没有办法只添加单选按钮呢?
我的表单:
{{extend 'layout.html'}}
{{=form.custom.begin}}
<table>
<tr>
<td> {{=form.custom.selection_type[0]}}:</td>
<td> {{=form.custom.widget.biller_list}}</td>
</tr>
<tr>
<td> {{=form.custom.widget.selection_type[1]}}:</td>
<td> {{=form.custom.widget.biller_code}}</td>
</tr>
</table>
{{=form.custom.end}}
这是在HTML源代码中发生的情况的例子:
<table>
<tr>
<td> <tr><td><input name="selection_type" type="radio" value="From my biller list" />From my biller list</td></tr>:</td>
...
</tr>
...
</table>
我的模型:
db.define_table('payment_bpay_step1',
Field('selection_type', 'list:string'),
Field('biller_list', db.biller, notnull=True),
Field('biller_code'),
Field('biller_name'))
db.payment_bpay_step1.selection_type.requires = IS_IN_SET(('From my biller list', 'Search by biller code', 'Search by biller name'))
db.payment_bpay_step1.selection_type.widget = SQLFORM.widgets.radio.widget
1 个回答
1
现在这个功能还没有稳定版本,但在开发版本中,你可以为单选按钮小部件指定使用
- 或
样式,而不是传统的表格样式。我想可以这样写:
db.payment_bpay_step1.selection_type.widget = \
lambda f, v: SQLFORM.widgets.radio.widget(f, v, style='divs')
你也可以创建一个自定义的小部件,具体的做法可以参考这本书的最后一部分。
当你说想要“innerhtml”和单选按钮的值不一样时,你是指单选按钮旁边的标签吗?如果是这样的话,IS_IN_SET验证器有一个'labels'参数,它是一个与选项相关的标签列表。