Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Form onsubmit versus submit button onclick

UPDATE From @BrendanEich ‏

@mplungjan onclick of submit just falls out of that being a button; form onsubmit is clearly better.


Which would be the reasons to ever use the onclick of a submit button to determine whether or not the form should be submitted?

I believe strongly that

  1. to execute something before submit and cancel the submit in case of error, the form's onsubmit event is the obvious place to put it
  2. If you use the onclick of a submit button and later decide to use type="image" the event handler will fail in many browsers
  3. if you change the submit to a button, you will have to add a submit to the onclick event handler too.

I am looking for strong reasons to prefer using a submit button's onclick event over the form's onsubmit.

UPDATE: Please note that I am personally well aware of many of the issues around form submission and validation.

For example that submitting by javascript will not trigger the onsubmit http://jsfiddle.net/mplungjan/3A4Ha/

<form onsubmit="alert('onSubmit called')">
    <input type="text" value="This will submit on enter but in IE the onclick is not triggered" style="width:100%"/><br/>
    <input type="submit" onclick="alert('Clicked')" />
</form><br />
<a href="#" onclick="alert('Submitting by script'); return false">Submit by script will not trigger onsubmit</a>

Also that IE will not trigger the onclick if you hit enter in the form in my fiddle


History:

Got into a discussion here

html button not clickable without being disabled

I have an intense dislike of using the onclick of a submit button for ANYTHING due to many1 years of seeing this not work in a number of browsers, mostly older version of IE. I have listed a few of the obvious reasons, but I am sure they will not convince the hardened user.

Can SO's community help me nail this one to the wall, like they nailed w3schools? Also feel free to give comments as to how I can phrase this question in an acceptable manner.


1: since the days of NS2.x and IE3.02

like image 803
mplungjan Avatar asked Aug 02 '11 06:08

mplungjan


People also ask

What is the difference between Onsubmit and Onclick?

OnSubmit is used on a form , and indicates that the information is to be submitted to the server at this point unless you return false. OnClick is used on anything, and indicates that it was clicked, offering no other context to the intention of the event at all.

Does Onsubmit work on a button?

A Form can have onsubmit event but a button cannot have the onsubmit.

What happens when submit button is clicked?

The form will be submitted to the server and the browser will redirect away to the current address of the browser and append as query string parameters the values of the input fields.

Can I use Submit button without form?

Submit buttons don't submit if they are not in a form.


1 Answers

Form onsubmit is a more correct approach, for the simple reason that a form can also be submitted with the <ENTER> key, and not just by clicking the submit button.

like image 158
Madara's Ghost Avatar answered Sep 23 '22 19:09

Madara's Ghost