Ho una forma che assomiglia a questo:Invio di un modulo ajax jQuery con due bottoni di invio
<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>
Quando mi legano a quello del modulo di presentare ($("vote_form").submit()
), non mi sembra di avere accesso a quale immagine l'utente ha fatto clic. Così sto cercando di legarsi a fare clic sull'immagine stessa ($(".vote_down, .vote_up").click()
), che presenta sempre la forma, indipendentemente dal fatto che provo
- return false;
- event.stopPropogation(); oppure
- event.preventDefault();
perché tutti questi sono eventi di tipo.
Devo collegare il mio $ .post() per l'evento form.submit(), e se sì, come faccio a sapere quale ingresso l'utente fa clic su, o
Devo collegare il mio $ .post() al clic dell'immagine e, in tal caso, come impedire che anche il modulo venga inviato.
Ecco ciò che il mio codice jQuery sembra ora:
$(".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!?
});
Grazie mille per questo. Abbreviato il mio tentativo esistente un po '! – mhenrixon
Perché non evitare hardcoding '" & submit = "' usando '$ this.attr (" nome ")'? – Bengt
@bngtlrs Immagino perché è una funzione chiamata overhead che è semplicemente inutile. – PaulSkinner