2011-08-02 28 views
11

ACTUALIZACIÓN De @BrendanEich Formulario onsubmit frente al botón de enviar onclick

@mplungjan onclick de presentar simplemente se cae de ese ser un botón; formulario onsubmit es claramente mejor.


Cuáles serían las razones para usar siempre el onclick de un botón de envío para determinar si procede o no la forma debe presentarse?

Creo firmemente que

  1. para ejecutar algo antes de enviar y cancelar el envío En caso de error, evento onsubmit del formulario es el lugar obvio para ponerlo
  2. Si utiliza el onclick de un presente y luego decida utilizar type = "image" el controlador de eventos fallará en muchos navegadores
  3. si cambia el botón de enviar a, también deberá agregar un envío al controlador de eventos onclick.

Estoy buscando razones de peso para preferir utilizar el evento onclick de un botón de envío sobre el envío del formulario.

ACTUALIZACIÓN: Por favor, no soy consciente personalmente de muchos de los problemas relacionados con el envío y la validación de formularios.
Por ejemplo que la presentación por javascript no activará la 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> 

también que el IE no se disparará el onclick si se golpea entrar en la forma en mi violín


Historia:

Tengo una discusión aquí

html button not clickable without being disabled

que tienen una aversión intensa de utilizar el onclick de un botón de envío para cualquier cosa debido a muchos años de ver esto no trabajar en varios navegadores, sobre todo la versión anterior de Internet Explorer. He enumerado algunas de las razones obvias, pero estoy seguro de que no convencerán al usuario fortalecido.

¿La comunidad de Can SO me puede ayudar a clavar esta a la pared, como si clavaran w3schools? También siéntase libre de dar comentarios sobre cómo puedo formular esta pregunta de manera aceptable.


1: desde los días de NS2.x y IE3.02

+1

Parece más una discusión que una pregunta ... ¡cuidado! Oh, estoy de acuerdo con el uso de enviar evento. :-) – RobG

+0

Estoy de acuerdo con el uso del envío del formulario; esto también lo cubre para enviarlo mediante la tecla Intro en lugar del botón Enviar. – nnnnnn

+0

Posible duplicado: http://stackoverflow.com/questions/4529012/should-i-use-the-inputs-onclick-or-the-forms-onsubmit-event-to-validate-form-fi –

Respuesta

12

Formulario onsubmit es un enfoque más correcto, por la sencilla razón de que un formulario también puede ser presentado con la tecla <ENTER>, y no solo haciendo clic en el botón Enviar.

+0

Además, Javascript. – Paddy

+0

Eso también :) Pero tiendo a dar un ejemplo más práctico. Buena llamada sin embargo. –

+0

Solo para completar, para futuros visitantes. :) Pero sí, cubriste el 99% del caso de uso, por lo que acabo de comentar tu respuesta en lugar de agregar la mía. – Paddy

Cuestiones relacionadas