2012-10-08 32 views
8

decir que tengo el código HTML siguiente:

<form> 
    ...some form fields... 
    <input type="submit" id="submitButton" value="Submit" /> 
</form> 

Y tengo un método javascript validate que comprueba los campos del formulario para varios escenarios válidos, volviendo true si todo está bien o false si hay algo mal.

¿Hay alguna diferencia real en jQuery entre hacer esto:

$("form").submit(function() { 
    return validate(); 
}); 

... o hacer esto:

$("#submitButton").click(function(){ 
    return validate(); 
}); 

Y ¿hay ventajas/desventajas entre los dos?

+2

aplicable en este caso, pero si tiene dos botones de envío, presionar '' Enter' sólo se desencadena manejador click' del primer botón. Por lo tanto, si vincula un manejador de 'clic' al segundo botón de envío, no se ejecutará (pero se enlazará con el primero): http://jsfiddle.net/7GJyN/. – pimvdb

Respuesta

13

La devolución de llamada por clic solo se realiza si el usuario hace clic en el botón Enviar. Pero hay casos en los que debe enviar el formulario automáticamente mediante javascript, en ese caso la devolución de llamada no se activa mientras se envía la devolución de llamada. Recomendaría usar siempre el envío para la validación y la acción intrínseca del formulario, mientras utilizo la devolución de llamada por clic para la animación u otras cosas relacionadas con la acción de hacer clic en el botón.

+1

Escribir en una entrada de texto también envía el formulario y el controlador de clic no lo detecta. – bfavaretto

+1

@bfavaretto: Lo hago por Chrome. – pimvdb

+0

@pimvdb Estás en lo correcto, debería haber probado antes de decir eso. Pero extraño, ¿no? No esperaría que un evento de clic se active cuando no hubo clic. – bfavaretto

1

La ventaja del primer método es que si su formulario se envía por varios botones o completa diferentes acciones, al colocar la validación solo en el botón de enviar significa que el formulario podría estar en un estado inválido si se envía a través de los otros métodos.

El mejor método es colocar la validación en el envío del formulario porque, sin importar cómo se envíe el formulario (mediante un clic de botón, programáticamente desde otro lugar), la validación seguirá activada.

2

Los eventos de clic se activan antes, el evento de envío se activa después del evento de clic.

Enviar:

  • podría ser demasiado tarde para bloquear el caso si algunos datos son erróneos (Minior y navegadores antiguos)
  • disparadores también someter a la orden

Click:

  • Eventos abrumadores, casi todo está vinculado con un clic. ¿Actuación?
  • no se activa en enviar comandos
No
Cuestiones relacionadas