2010-01-05 10 views
1

J'ai un gestionnaire onsubmit ajouté à une forme comme ceci:Puis-je déterminer quel bouton a été cliqué pour déclencher un événement onSubmit?

$('#content_form').bind('submit',function(e) { 

     source = $(e.target).attr('name'); 
     alert(source); 
     return false; 
    }); 

= si e.target l'élément de forme. J'utilise plusieurs boutons de soumission, et j'ai besoin de déterminer lequel a été cliqué (dans les navigateurs modernes, le bouton cliqué est le seul qui le soumet, je le fais pour IE6 compat - il soumet les valeurs de tous les boutons) . Mon seul pensait à tuer tous les événements de sous-diffusion, puis attacher les événements de clic aux boutons eux-mêmes. Cela tuerait complètement la fonctionnalité de formulaire si javascript n'était pas activé, donc je voudrais éviter cela.

+0

Si vous tuez les événements onsubmit avec javascript, il ne va pas tuer la fonctionnalité de formulaire si javascript est pas activé, les événements onsubmit ne seront pas tués (en raison de js étant désactivé) - donc pas de problème là-bas? - Cela étant dit, il y a probablement un moyen plus facile de déterminer quel bouton a été enfoncé. – Graza

Répondre

1

Une implémentation facile (mais peut-être naïve) consisterait à faire en sorte que le gestionnaire onclick pour chaque bouton définisse un champ indiquant lequel a été le dernier cliqué. Dans votre gestionnaire de soumission, vous pouvez ensuite vérifier la valeur de ce champ.

+0

Cela fonctionnerait, mais je pense que je vais l'attaquer différemment, après avoir lu les réponses et considéré. J'espérais un moyen facile de dire "oui, il est originaire de X" mais apparemment pas :) – Erik

+0

Écrivez-nous et dites-nous ce que vous avez fait! Je suis curieux de savoir comment vous avez résolu le problème. –

1
$('#content_form input:submit').bind('click', function(e) { 
    $('#content_form').submit(); 

    // you can now reference this or $(this), 
    // which should contain a reference to your button 
}); 
+0

Cela ne fonctionne pas correctement car une touche 'entrée' peut déclencher l'événement onsubmit. Plus j'y pense, plus je pense que j'aborde l'IU de la mauvaise direction. – Erik

0

Avez-vous vérifié le jQuery Form Plugin? Il gère les formulaires de soumission via ajax très bien et va gérer ce problème (avec beaucoup d'autres) pour vous.

-1

autre chose que vous pouvez faire est d'utiliser preventDefault(); au lieu de return false

+0

Pourquoi cette solution a-t-elle été supprimée? Il est important d'être explicite à propos de cette fonctionnalité, 'return false' empêchera également la propagation de l'événement, où' preventDefault(); 'ne le fera pas. –

+0

Parce que votre réponse est totalement indépendante de la question initiale – dVaffection

Questions connexes