J'ai une forme qui ressemble à ceci:Envoi d'un formulaire ajax jQuery avec deux boutons de soumission
<form action="/vote/" method="post" class="vote_form">
<input type="hidden" name="question_id" value="10" />
<input type="image" src="vote_down.png" class="vote_down" name="submit" value="down" />
<input type="image" src="vote_up.png" class="vote_up" name="submit" value="up" />
</form>
Quand je lie à présenter de la forme ($("vote_form").submit()
), je ne semble pas avoir accès à quelle image l'utilisateur a cliqué sur. Donc, je suis en train de se lier à cliquer sur l'image elle-même ($(".vote_down, .vote_up").click()
), qui soumet toujours la forme, que j'essaie
- return false;
- event.stopPropogation(); ou
- événement.preventDefault();
car tous sont des événements de formulaire.
Dois-je joindre mon .post de $() à l'événement form.submit(), et si oui, comment puis-je dire à quelle entrée l'utilisateur a cliqué sur, ou
Dois-je joindre mon $ .post() au clic sur l'image, et si oui, comment puis-je empêcher le formulaire de soumettre aussi.
Voici ce que mon code jQuery ressemble maintenant:
$(".vote_up, .vote_down").click(function (event) {
$form = $(this).parent("form");
$.post($form.attr("action"), $form.find("input").serialize() + {
'submit': $(this).attr("value")
}, function (data) {
// do something with data
});
return false; // <--- This doesn't prevent form from submitting; what does!?
});
Merci beaucoup pour cela. Réduit ma tentative existante un peu! – mhenrixon
Pourquoi ne pas éviter le codage en dur '" & submit = "' en utilisant '$ this.attr (" name ")'? – Bengt
@bngtlrs Je suppose que c'est une surcharge d'appel de fonction qui est simplement inutile. – PaulSkinner