jQuery: Trouvez l'élément cliqué lors de la liaison à un événement de soumission de formulaire?

Je pense que cela devrait être simple. Dire que j'ai la suite de jQuery:

$someForm.live('submit', function(event) {
//do something
});

Si il n'y a plus d'un bouton de soumission (<button type="submit">) sous cette forme, et je veux me référer à la nameattribut du bouton qui a été cliqué, comment pourrais-je le faire au sein de la fonction de rappel?

Mise À Jour - La Clarification

Dans le rappel du contexte, à la fois this et event.target reportez-vous à la forme elle-même, et event est profondément imbriquée à l'objet. Il peut contenir ce que je cherche, mais je n'ai pas encore trouvé.

Une autre façon de formuler cette question, "si je suis à regarder pour un événement submit d'un formulaire (et pas de ses éléments enfant), est-il possible, quand j'ai la poignée de l'événement, afin de déterminer l'élément enfant à partir de laquelle l'événement bouillonnait à l'écran?" Est l'élément cliqué encore disponibles à ce point, ou ne le navigateur, il suffit de considérer un événement sur le formulaire lui-même qui n'avait pas de plus profond origine?

Mise À Jour 2 - Réponse

Il semble que la réponse est ce que Nick Craver dit - l'événement submit a son origine dans le formulaire lui-même, donc il ne peut pas être retracée à la touche, ce qui a eu un événement de clic, pas un événement submit. Pour obtenir tout complément d'information du clic, il est nécessaire de disposer d'un écouteur de clics de bouton.

Dans certains cas (comme le mien), vous pouvez avoir besoin à la fois 1) de capture soumettre le bouton est cliqué, et 2) de se lier à l'événement submit du formulaire. Par exemple, si vous utilisez jQuery validation, il empêche le formulaire de soumission jusqu'à ce que celui-ci est valide. Si vous faites le formulaire de soumission via ajax par la liaison au clic de bouton, vous pourrez éviter que la validation.

Comme Nick l'a montré, vous pouvez résoudre ce problème en capturant le bouton info à l'aide d'un écouteur de clics sur les boutons, et ensuite utiliser cette information dans le formulaire de soumission de rappel.

Propre façon de passer le bouton info de la cliquez sur retour vers le formulaire de soumission de rappel est d'utiliser jQuery.data() pour stocker le sur le formulaire. Par exemple:

//In the button's click event callback...
jQuery.data($someForm, 'lastSubmitButton', event.target.name);

//In the form's submit event callback...
var whichButton = jQuery.data($someForm, 'lastSubmitButton');

Cela évite la nécessité d'une variable globale.

source d'informationauteur Nathan Long