Hi Richard,

My tables are pretty large (30-60 columns each), so let me use another
test table.

Let's say we have a table called survey.
If the user selects "Male" in the "Sex" field, "Favourite Car" and
"Favourite Sport" must not be empty.
"Favourite Perfume" and "Favourite Soapie" can be empty.
If the user selects "Female" then the opposite applies.

I was initially trying to hide the fields, and only unhide the
appropriate ones bases on the user input.
But it is not necessary. I don't mind displaying all fields, as long
as they are validated based on user input.


I initially tried SQLFORM.grid and smartgrid, but what I want to
achieve does not seem possible.
I thought of splitting the input form into multiple forms, but due to
the number of conditions, it won't be feasible to the user.

Thank you for any advice/suggestions.

Regards,

Rakesh


#-- TABLE DEFINITION
db.define_table('survey',
    Field('fname',
        'string',
        length=25,
        required=True,
        requires=[IS_NOT_EMPTY(), IS_UPPER()],
        label='First Name'),
    Field('sname',
        'string',
        length=80,
        required=True,
        requires=[IS_NOT_EMPTY(), IS_UPPER()],
        label='Surname'),
    Field('sex',
        'string',
        length=1,
        required=True,
        requires=[IS_NOT_EMPTY(), IS_UPPER(), IS_IN_SET(['F', 'M'])],
        label='Sex'),
    Field('fav_perfume',
        'string',
        length=20,
        required=False,
        requires=IS_UPPER(),
        label='Favourite Perfume'),
    Field('fav_soapie',
        'string',
        length=20,
        required=False,
        requires=IS_UPPER(),
        label='Favourite Soapie'),
    Field('fav_car',
        'string',
        length=20,
        required=False,
        requires=IS_UPPER(),
        label='Favourite Car'),
    Field('fav_sport',
        'string',
        length=20,
        required=False,
        requires=IS_UPPER(),
        label='Favourite Sport')
    )



On Mar 20, 11:46 am, Richard Vézina <ml.richard.vez...@gmail.com>
wrote:
> We will need more code to help you...
>
> Regards
>
> Richard
>
> On Tue, Mar 20, 2012 at 10:15 AM, Rakesh Singh 
> <rak...@verifaction.co.za>wrote:
>
>
>
>
>
>
>
> > Hi All,
>
> > Apologies if this has been covered before but I cannot seem to find the
> > appropriate solution in the archives or in the web2py book.
>
> > I am using SQLFORM.grid to generate an interface into my table.
> > Some of my fields in the table are only required based on other inputs.
> > As a simple example, if the user is an individual, the Identity Number
> > field must be completed.
> > But if it is a business, the Company Registration Number field must be
> > completed.
>
> > I read the Conditional Field section in the book, but I cannot seem to get
> > it to work on my form.
> > Also, my table name and columns have quite a few underscores, so I'm not
> > sure if this is affecting the jQuery syntax.
> > eg. NCS_SARS_DECLARANT is the table, RECORD_TYPE is the column
> > If I understand correctly, I should have :
> > jQuery('#NCS_SARS_DECLARANT_RECORD_TYPE__row').hide() ?
>
> > What is the suggested way in achieving this?
>
> > Many thanks.
>
> > Regards,
>
> > Rakesh
>
> > Running Web2py Version 1.99.7

Reply via email to