jquery-使用多个按钮以编程方式提交表单
我有一张有两个按钮的表格。我使用jquery-使用多个按钮以编程方式提交表单,jquery,jquery-plugins,Jquery,Jquery Plugins,我有一张有两个按钮的表格。我使用POST数据中元素的name属性检查在服务器端单击的是哪一个,并相应地执行以下操作: <input id="reply" name="reply" type="submit" value="{%trans "REPLY"%}"> <input id="delete" name="delete" type="submit" value="{%trans "DELETE"%}"> 当然,此代码会导致提交表单时,DELETE按钮的名称不在POS
POST
数据中元素的name
属性检查在服务器端单击的是哪一个,并相应地执行以下操作:
<input id="reply" name="reply" type="submit" value="{%trans "REPLY"%}">
<input id="delete" name="delete" type="submit" value="{%trans "DELETE"%}">
当然,此代码会导致提交表单时,
DELETE
按钮的名称不在POST
数据中。有没有一种方法可以将该数据添加到POST
数据中,或者有更好的方法来实现我正在尝试的内容?最简单的方法是在单独的表单中定义删除按钮。有几种方法可以做到这一点
Boxy
回调中,将其作为查询参数附加到表单的操作中Boxy
回调中的按钮名称(或用于将命令传递给服务器的任何名称)。我不能快速写出一个jQuery示例(我自己更像是一个原型),但它应该是相当简单的。如果您正在进行优雅的降级(允许在不使用JavaScript的情况下提交表单),很遗憾,这意味着您需要在服务器端检查隐藏字段(启用了JavaScript)和按钮名称(未启用)post
回调中处理该问题您可以使用带名称空间的事件,在确认时解除绑定,然后重新触发:
$(document).ready(function() {
var $delete = $("#delete");
$delete.bind("click.guard", function() {
Boxy.ask("Delete?", {"1": "YES", "2": "NO"}, function(val) {
if (val == "1") {
$delete.unbind("click.guard").click();
}
});
return false;
});
});
是的,当然我可以将表单发布到服务器端只接收删除请求的另一个视图。但这是最好的方法吗?就我个人而言,我会在不同的控制器中处理回复和删除,因此这对我来说是两全其美的。第一种方法不适用于非javascript提交。第三种方法需要比第二种方法多一点(而且是不必要的?)的努力,第二种方法似乎是最好的。谢谢。在FF3和IE7上试用过,它可以正常工作。好得难以置信,谢谢!美好的当然需要确保在所有目标浏览器上进行测试,但除此之外……更新:适用于最新的FF、IE、Chrome和Safari,以及IE7。为什么
单击.guard
而不是单击?
$(document).ready(function() {
var $delete = $("#delete");
$delete.bind("click.guard", function() {
Boxy.ask("Delete?", {"1": "YES", "2": "NO"}, function(val) {
if (val == "1") {
$delete.unbind("click.guard").click();
}
});
return false;
});
});