Tengo una forma que se parece a esto:enviar un formulario ajax jQuery con dos botones de envío
<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>
Cuando ato a presentar ($("vote_form").submit()
), no parecen de la forma de tener acceso a qué imagen el usuario hizo clic en. Así que estoy tratando de obligar a hacer clic en la imagen en sí ($(".vote_down, .vote_up").click()
), que siempre envía el formulario, independientemente de si lo intento
- return false;
- event.stopPropogation(); o
- event.preventDefault();
porque todos ellos son eventos de formulario.
debo adjuntar a mi $ .post() para el evento form.submit(), y si es así, ¿cómo puedo saber qué entrada el usuario hace clic en, o
debo adjuntar a mi $ .post() al clic en la imagen y, de ser así, cómo impido que el formulario también se envíe.
Esto es lo que mi código jQuery parece ahora:
$(".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!?
});
Muchas gracias por esto. Acorté mi intento existente un poco! – mhenrixon
¿Por qué no evitar hardcoding '" & submit = "' usando '$ this.attr (" name ")'? – Bengt
@bngtlrs Supongo que porque es una sobrecarga de llamada de función que es simplemente innecesaria. – PaulSkinner