SOLVED: the magic formname in:

     if form.accepts(request.vars, formname=<unique formname>):
          ...

with different formname for both forms solved the problem.

Thanks for the wonderful web2py!


On Mar 9, 5:06 pm, StUStD <hjansen...@gmail.com> wrote:
> I have two selection forms in one html page (see below), each with two
> submit buttons, one to "update" a selected database item, and another
> to select the item (i.e. store it in a session database) -- the code
> for "multiple submit buttons" in one form was found in a web2py
> thread. The first form works fine, but the second form after
> submission (select or update) is processed by the action(s) of the
> first form... I guess it probably has to do with the same "action"
> name used in both forms, but I don't know whether it's related to the
> _name, _id or "this.form.<action>.value" aspect, or to a combination
> of these... Help appreciated! Thanks.
>
> def process_A():
>     """
>     Single form for A objects with multiple submit buttons (update and
> select)
>     that trigger one submit function with different parameters
>     """
>     o = < options list for A objects >
>
>     form=FORM(SELECT(*o, _name="aid"),
>
> INPUT(_type='hidden',_name='action',_id='action',_value='undefined'),
>
> INPUT(_type='button',_value='Update',_onclick='''this.form.action.value="1"­;this.form.submit();''',),
>               A("  "),
>
> INPUT(_type='button',_value='Select',_onclick='''this.form.action.value="2"­;this.form.submit();''',),)
>
>     if form.accepts(request.vars):
>         if request.vars.action=='1':
>             < update an A obj >
>         elif request.vars.action=='2':
>             < select an A obj >
>             redirect(URL('index'))
>         else:
>             raise Exception("Invalid action")
>     #
>     return form
>
> def process_B():
>     """
>     Single form for B objects with multiple submit buttons (update and
> select) that trigger one submit function
>     with different parameters.
>     """
>     o = < options list for B objects >
>
>     form=FORM(SELECT(*o, _name="bid"),
>
> INPUT(_type='hidden',_name='action',_id='action',_value='undefined'),
>
> INPUT(_type='button',_value='Update',_onclick='''this.form.action.value="1"­;this.form.submit();''',),
>               A("  "),
>
> INPUT(_type='button',_value='Select',_onclick='''this.form.action.value="2"­;this.form.submit();''',),)
>
>     if form.accepts(request.vars):
>         if request.vars.action=='1':
>             < update a B obj >
>         elif request.vars.action=='2':
>             < select a B obj >
>             redirect(URL('index'))
>         else:
>             raise Exception("Invalid action")
>     #
>     return form

Reply via email to