Form within a Form - will it cause problems when submitting?

D

Dave Smithz

Hello there,

Summary: Is it OK to use Forms within forms and will the right submit button
presses correspond to the correct form action?

Details:

I want to build a big HTML table which will contain certain functionality
that requires the forms to have lots of different command buttons.
I do not want to have to use JavaScript as some users may have it disabled.
Because of the way I will be laying out the form, it will result in a
scenario where I have forms within forms.

Therefore if you imagine the entire table contained within a form, but also
within that table, I also have other smaller forms with different actions if
the user presses a submit button within that form. So generally, when a user
presses a submit button, I want the action that is taken to be the action
defined by the PARENT form that the submit button is contained within.

A further example:
FormA with action "a.htm" has text boxes tb1 tb2, tb3 and a submit button
(named: Asubmit).
It also contains FormB with action "b.htm" which has text box tbB1 and tbB2
and a submit button (named BSubmit).

If the user presses Asubmit I want the action to be a.htm and at least the
text boxes data for tb1 - tb3 to be sent.
If the user presses Bsubmit I want the action to be b.htm and as least the
text boxes data for tbB1 and tbB2 to be sent.

Is this how it will work and will this work in all browsers and is it OK by
HTML standards to do things this way?

I hope this makes sense.


Kind regards

Dave.
 
S

Steve Pugh

Dave Smithz said:
Summary: Is it OK to use Forms within forms and will the right submit button
presses correspond to the correct form action?
No.

Therefore if you imagine the entire table contained within a form, but also
within that table, I also have other smaller forms with different actions if
the user presses a submit button within that form. So generally, when a user
presses a submit button, I want the action that is taken to be the action
defined by the PARENT form that the submit button is contained within.

Get rid of the inner form tags, leaving the inputs as they are. Now
you have one big form. Pressing any of the submit buttons will submit
to a single resource on the server. That resource examines the
submitted data, sees which fields have been filled in, sees which
submit button (if any) was used to submit the form and then acts
accordingly.

In the case of forms with hidden inputs or prefilled/preselected
inputs this may mean sending a response back to the user asking them
to confirm/clarify what they wanted to do.

Or redesign the page to eliminate the overlap.
Is this how it will work and will this work in all browsers and is it OK by
HTML standards to do things this way?

No. The HTML spec forbids nested forms. Browser behaviour is likely to
be erratic. Don't try it. Either use a single resource to handle all
submissions or redesign the page so that the forms don't overlap.

Steve
 
J

Jukka K. Korpela

Steve Pugh said:
The HTML spec forbids nested forms. Browser behaviour is likely to
be erratic.

Technically, for an HTML document that contains nested forms, there is
no such thing as erratic vs. correct behaviour. The HTML specification
imposes no requirements on processing syntactically incorrect
documents, so a browser may crash, or say "beep beep" or "D'Oh!",
or start playing Towers of Hanoi, or even submit some data somewhere,
without violating the specification.

(As a matter of quality of implementation, the pragmatically best
behaviour would probably consist of reporting an error to the user and
prompting for a user choice between some actions that seem meaningful.
But browsers typically have no _planned_ error processing in such
matters.)
 
Joined
Oct 30, 2009
Messages
1
Reaction score
0
Embedding forms within another isn't nice at all.

Found this recent blog which definitely provides a way for me to implace another submit button which can be used to load the next dropdown field with JS switched off. Go to markuzweb.blogspot.com/2009/10/embedding-html-forms-within-another.html and read. :captain:
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,768
Messages
2,569,574
Members
45,051
Latest member
CarleyMcCr

Latest Threads

Top