我有一个长这样的表单:
<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>
当我绑定表单的提交事件(
$("vote_form").submit()
)时,似乎无法访问用户点击的是哪个图像。因此,我试图绑定到图像本身的点击事件($(".vote_down, .vote_up").click()
),不管我尝试使用以下内容:
- return false;
- event.stopPropogation(); 或者
- event.preventDefault();
因为这些都是表单事件所以它们总是会提交表单。
我应该将我的$.post()附加到form.submit()事件上吗?如果是这样,如何告诉我用户单击了哪个输入框?或者
我应该将我的$.post()附加到图像点击事件上吗?如果是这样,如何防止表单也被提交。
这是我的jQuery代码:
$(".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!?
});
$ this.attr("name")
来避免硬编码"&submit ="
? - Bengt.ajaxForm()
,我的自动发送解决方案是.ajaxForm({}).submit();
。将在没有提交按钮和自定义事件的情况下发送ajax调用。 - user1954544