I have a SQLFORM.factory form that has multiple fields, one hidden by
default in the view (via jquery) and shown when another field, a dropdown
select, changes to some value. In the code below, field_A is shown if
field_B 'Choice 2' is selected.

The problem is that fields (eg field_A) which are shown only after the
dropdown is changed are not being validated properly. Here, field_B and
field_C are validated just fine (they are never hidden), yet field_A is not
validated in the code below - it could be anything and the form will still
submit.



form = SQLFORM.factory(
    Field( 'field_A', requires=IS_IN_SET(['Choice 1', 'Choice 2'],
multiple=False, zero='Please choose') ),
    Field( 'field_B', requires=IS_IN_SET(['Choice 1', 'Choice 2'],
multiple=False, zero='Please choose') ),
    Field( 'field_C', requires=IS_IN_SET(['Choice 1', 'Choice 2'],
multiple=False, zero='Please choose') )
)


def cvalidator(form):
    if form.vars.field_B == 'B Choice 2':
        if not form.vars.field_A: form.vars.field_A.errors = 'Fill it in'

if form.accepts(request.vars, session, onvalidation=cvalidator): pass



<script>
jQuery(document).ready(function() {

    jQuery('#no_table_field_A__row').hide();

    jQuery('#no_table_field_B').change(function(){

        if( jQuery('#no_table_field_B option:selected').text()=='Choice 2'
){
            jQuery('#no_table_field_A__row').show();
        }else{
            jQuery('#no_table_field_A__row').hide();};

    });
});
</script>

{{=form}}



How can I get all fields to validate properly here?

Thanks for help,
-j

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to