jQuery serializeArray n'inclut pas les soumettre bouton qui a été cliqué

J'ai un formulaire avec deux boutons. Un pour l'enregistrement d'un album et l'autre pour l'annulation de la procédure de sauvegarde. Je suis l'aide de la rails.js (une commune AJAX/jQuery plug-in pour ceux d'entre vous pas dans le savoir) fichier javascript qui fonctionne avec jQuery pour le javascript discret/appels ajax. Lorsque j'envoie le formulaire des données via ajax, je veux le nom et la valeur du bouton, j'ai cliqué pour être soumis avec le reste des données, afin que je puisse prendre une décision en se basant sur le bouton qui a été cliqué.

De la méthode dans le rails.js fichier utilise .serializeArray() pour l'envoi des données du formulaire au serveur. Le problème est que cela n'inclut pas la paire nom/valeur du bouton j'ai cliqué. jQuery états de site web qu'ils le font exprès (même si ses mon avis qu'ils devraient):

"La .serializeArray() méthode utilise la norme W3C règles pour succès de contrôles pour déterminer les éléments qu'il devrait inclure; en particulier, l'élément ne peut pas être désactivé et doit contenir un nom d'attribut. Pas de bouton soumettre valeur est sérialisé depuis le formulaire n'a pas été soumis à l'aide d'un bouton."

Comment peuvent-ils supposer qu'un formulaire N'a PAS été soumise à l'aide d'un bouton? Cela n'a aucun sens et une hypothèse erronée, je crois.

Sous les règles W3C, le bouton a été activé pour la soumission d'un formulaire est considéré comme un la réussite du contrôle.

Car les développeurs de jQuery ont décidé de le faire sur le but, puis-je supposer qu'il existe une autre méthode qui N'est PAS exclure le bouton activé dans une sérialisation?

EDIT: Voici un exemple rapide de ce que mon formulaire pourrait ressembler...

<!DOCTYPE html5>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
  $(document).ready(function() {
    $('#form').submit(function(e) {
      //put your breakpoint here to look at e
      var x = 0;
    });
  });
</script>
</head>
<body>
  <form id="form">
    <input name="name" type="text"><br/>
    <input name="commit" type="submit" value="Save"/>
    <input name="commit" type="submit" value="Cancel"/>
  </form>
</body>
  • Pour quelqu'un d'autre trouver cet, le même problème existe avec les <button> tag.