J'ai un formulaire avec deux boutons. Un pour enregistrer un enregistrement et l'autre pour annuler la procédure de sauvegarde. J'utilise le rails.js
(un plugin AJAX/jQuery commun pour ceux d'entre vous qui ne sont pas au courant) fichier javascript qui fonctionne avec jQuery pour les appels javascript/ajax discrets. Lorsque j'envoie les données de formulaire sur ajax, je veux que le nom et la valeur du bouton sur lequel j'ai cliqué soient soumis avec le reste des données afin que je puisse prendre une décision sur ce que je dois faire en fonction du bouton sur lequel j'ai cliqué.jQuery serializeArray n'inclut pas le bouton d'envoi sur lequel vous avez cliqué
La méthode du fichier rails.js
utilise .serializeArray()
pour envoyer des données de formulaire au serveur. Le problème est que cela n'inclut pas la paire nom/valeur du bouton sur lequel j'ai cliqué. le site Web de jQuery déclare qu'ils le font exprès (eventhough son mon avis, ils devraient):
« La méthode .serializeArray()
utilise les règles standard W3C pour successful controls de déterminer quels éléments il devrait inclure, en particulier l'élément ne peut pas être désactivé et doit contenir un attribut de nom Aucune valeur de bouton de soumission n'est sérialisée car le formulaire n'a pas été envoyé à l'aide d'un bouton. "
Comment peuvent-ils supposer qu'un formulaire n'a PAS été soumis à l'aide d'un bouton? Cela n'a aucun sens et une mauvaise supposition je crois.
Selon les règles du W3C, le bouton qui a été activé pour la soumission d'un formulaire est considéré comme un contrôle réussi.
Étant donné que les développeurs de jQuery ont décidé de le faire exprès, puis-je supposer qu'il existe une autre méthode qui exclut du bouton activé dans une sérialisation?
EDIT: Voici exemple rapide de ce que ma forme 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 toute personne qui trouve autre cela, le même problème existe avec la balise ''