471,321 Members | 1,652 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 471,321 software developers and data experts.

Question about which is the correct style of JavaScript to pass to FORM's onSubmit attribute

Which is the following is correct?

a) <form ... onSubmit="return checkData()">

b) <form ... onSubmit="return checkData();">

c) <form ... onSubmit="checkData()">

d) <form ... onSubmit="checkData();">

....where checkData is a JavaScript function that returns a true or false
value.

It seems that Internet Explorer accepts all of the above, but I'm not
taking that to mean that all are correct.

I've attempted to search the W3 web site on the terms form and onsubmit,
but the documentation refers to the attribute value as being an intrinsic
event (without giving any examples). The archived mailing lists contain
messages which demonstrate all of the options that I've provided above. I
gave up after the forth page of search results because of the number of
conflicting examples.

Does anyone know which is correct?

Thanks for your precious time.

Jul 23 '05 #1
2 6330
On Mon, 15 Nov 2004 15:51:19 GMT, Sean Dockery <sd******@securac.net>
wrote:
Which is the following is correct?

a) <form ... onSubmit="return checkData()">

b) <form ... onSubmit="return checkData();">

c) <form ... onSubmit="checkData()">

d) <form ... onSubmit="checkData();">

...where checkData is a JavaScript function that returns a true or false
value.
All of them are correct in that they will result in the call of checkData.
However, only a) and b) will actually affect whether the form is submitted.

The content of an intrinsic event attribute becomes the body of an
anonymous function:

/* Note that IE doesn't pass an event argument. It uses a global
* variable of the same name. Either way, you can still use:
*
* on<event>="myFunction(event)"
*
* to access the event object.
*/
formElement.onsubmit = function(event) {
/* Value in onsubmit attribute */
};

Obviously, if you don't include a return statement, no value will actually
be returned when this anonymous function exits.

With regards to the semicolon, the same rules apply as normal: semicolons
are generally optional, but it's good practice to include them. If you had
two or more statements/expressions to evaluate, a semicolon would be
necessary to separate them.

The final point I like to make is that it's simpler to pass a reference to
the FORM when it is called, rather than obtain one later. That is:

<form ... onsubmit="return checkData(this);">

function checkData(form) {
/* You can now use form, rather than
* document.forms['formName']
*/
}
It seems that Internet Explorer accepts all of the above, but I'm not
taking that to mean that all are correct.


As I said, they are all syntactically correct, but the second two are
probably not what you want.

[snip]

Hope that helps,
Mike

--
Michael Winter
Replace ".invalid" with ".uk" to reply by e-mail.
Jul 23 '05 #2
Thanks, Michael. Your response was extremely helpful, and exactly what I
was looking for.

"Michael Winter" <M.******@blueyonder.co.invalid> wrote in message
news:opshiklmsxx13kvk@atlantis...
On Mon, 15 Nov 2004 15:51:19 GMT, Sean Dockery <sd******@securac.net>
wrote:
Which is the following is correct?

a) <form ... onSubmit="return checkData()">

b) <form ... onSubmit="return checkData();">

c) <form ... onSubmit="checkData()">

d) <form ... onSubmit="checkData();">

...where checkData is a JavaScript function that returns a true or false
value.


All of them are correct in that they will result in the call of
checkData. However, only a) and b) will actually affect whether the form
is submitted.

The content of an intrinsic event attribute becomes the body of an
anonymous function:

/* Note that IE doesn't pass an event argument. It uses a global
* variable of the same name. Either way, you can still use:
*
* on<event>="myFunction(event)"
*
* to access the event object.
*/
formElement.onsubmit = function(event) {
/* Value in onsubmit attribute */
};

Obviously, if you don't include a return statement, no value will
actually be returned when this anonymous function exits.

With regards to the semicolon, the same rules apply as normal: semicolons
are generally optional, but it's good practice to include them. If you
had two or more statements/expressions to evaluate, a semicolon would be
necessary to separate them.

The final point I like to make is that it's simpler to pass a reference
to the FORM when it is called, rather than obtain one later. That is:

<form ... onsubmit="return checkData(this);">

function checkData(form) {
/* You can now use form, rather than
* document.forms['formName']
*/
}
It seems that Internet Explorer accepts all of the above, but I'm not
taking that to mean that all are correct.


As I said, they are all syntactically correct, but the second two are
probably not what you want.

[snip]

Hope that helps,
Mike

--
Michael Winter
Replace ".invalid" with ".uk" to reply by e-mail.

Jul 23 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

10 posts views Thread by Oli | last post: by
27 posts views Thread by Terry Olson | last post: by
6 posts views Thread by bonehead | last post: by
5 posts views Thread by John | last post: by
7 posts views Thread by Bruno Alexandre | last post: by
1 post views Thread by Bill_W_Stephens | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.