web2py控制表单,选择选项时显示字段

时间:2012-03-23 17:23:07

标签: javascript python ajax web2py

我有一个表格内容很多字段

db.define_table('i2l_templates',
    Field('id','id',
          represent=lambda id:SPAN(A(T('View'),_href=URL('view_template',args=id)),' | ',
                                          A(T('Edit'),_href=URL('edit_template',args=id)))),
    Field('user_id', db.auth_user, default=auth.user_id, writable=False,readable=False,
          label=T('User Id')),
    Field('template_name', requires=IS_NOT_EMPTY(), type='string',
          label=T('Template name')),
    Field('template_type', requires=IS_IN_SET(('Letter', 'Invoice', 'Reminder')),
          label=T('Template type')),
    Field('myref_format', requires=IS_NOT_EMPTY(), type='string',
          label=T('My reference')),
    Field('myref_offset', type='integer',
          label=T('My ref. Offset')),
    Field('letterheader', type='integer',
          label=T('Letter Header')),
    Field('invoiceheader', type='integer',
          label=T('Invoice header')),
    Field('reminderheader', type='integer',
          label=T('Reminder Header')),
    format='%(template_name)s',
    migrate=settings.migrate)

所以我想这样做 当用户选择模板类型Letter时,会显示字段letterheaderinvoiceheaderreminderheader仍会隐藏。 当用户将类型更改为invoice时,字段invoiceheader会出现......依此类推

1 个答案:

答案 0 :(得分:1)

这样做使用jQuery .. 例如:

<script>
jQuery(document).ready(function(){
   jQuery('#i2l_templates_heading__row').hide();
   jQuery('#i2l_templates_headingvalue__row').hide();
   jQuery('#i2l_templates_template_type').change(function(){
        if(jQuery('#i2l_templates_template_type').attr('value')=="{{=T('Invoice')}}")
        {
            jQuery('#i2l_templates_heading__row').show();
            jQuery('#i2l_templates_headingvalue__row').show();
        }
        else {
            jQuery('#i2l_templates_heading__row').hide();
            jQuery('#i2l_templates_headingvalue__row').hide();
        }});
});
</script>