Форма управления web2py, показывать поля при выборе опции - PullRequest
1 голос
/ 23 марта 2012

У меня в таблице много полей

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, появится поле letterheader, а invoiceheader и reminderheader все еще будут скрыты когда пользователь меняет тип на invoice, появляется поле invoiceheader ... и т. д.

1 Ответ

1 голос
/ 09 апреля 2012

для этого используйте 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>
...