JQuery formulaire submit: Toute façon de savoir quel élément a déclenché le soumission?

J'utilise asp.net MVC et lorsque je soumets un formulaire, un développeur précédent a intégré une validation jQuery.

$('form').submit(function() { ...code done here to validate form fields }); 

Le problème est que les boutons "Enregistrer" et "Annuler" sur le formulaire déclenchent cette fonction de soumission jQuery. Je ne veux pas que la logique de validation disparaisse si le bouton d'entrée "Annuler" a été déclenché (id = "cancel" name = "cancel" value = "cancel"). Existe-t-il une manière, dans cette fonction de soumission, de récupérer l'ID, le nom ou la valeur du bouton d'entrée qui a été pressé pour soumettre le formulaire?

J'ai posé la même question: Comment puis-je obtenir le bouton qui a provoqué le soumission de l'événement de soumission de formulaire?

La seule solution de navigation croisée que je pourrais proposer était la suivante:

 $(document).ready(function() { $("form").submit(function() { var val = $("input[type=submit][clicked=true]").val() // DO WORK }); $("form input[type=submit]").click(function() { $("input[type=submit]", $(this).parents("form")).removeAttr("clicked"); $(this).attr("clicked", "true"); }); 

Je ne sais pas si c'est la réponse que vous recherchez mais que vous devez changer le bouton "Annuler" sur une étiquette d'ancrage. Il n'est pas nécessaire de soumettre une annulation sauf si vous travaillez sur les valeurs du formulaire.

Bien, cela ne se déclenchera que si le type du bouton d'entrée est ainsi:

 <input type='submit' ... 

Alors assurez-vous que le bouton d'annulation n'a pas de type='submit' et qu'il devrait fonctionner

MODIFIER

Cela fonctionne uniquement dans FF et non pas dans Chrome (et je l'imagine, je ne l'imagine pas non plus dans d'autres navigateurs basés sur WebKit), alors je la quitte ici comme solution de contournement spécifique au navigateur, une note intéressante mais pas comme réponse.


La suggestion de Neal de NE PAS faire le bouton d'annulation du type submit est probablement la manière la plus propre. Cependant, si vous DEVEZ le faire comme vous le faites maintenant:

 $('form').submit(function(e){ if(e.originalEvent.explicitOriginalTarget.id === 'cancel'){ //don't validate } else{ //validate } }); 
 var myForm = $('form'); $('input[type="submit"]',myForm).click(function(e) { var whoClickedsubmit = $(e.target); //further, you can use .attr('id') //do other things here }); 

MODIFIER

 .submit(function(event){ var target = event.originalEvent.explicitOriginalTarget.value; //But IE does not have the "explicitOriginalTarget" property });