我有一个带有两个按钮的表单。我使用name
数据中元素的POST
属性检查在服务器端单击了哪一个,并相应地执行操作:
<input id="reply" name="reply" type="submit" value="{%trans "REPLY"%}">
<input id="delete" name="delete" type="submit" value="{%trans "DELETE"%}">
我正在尝试使用JQuery向DELETE
按钮的click事件添加一个确认框(使用Boxy插件)。这是代码:
$(document).ready(function() {
$("#delete").click(function(e){
Boxy.ask('Delete?', {'1':'YES', '2':'NO'}, function(val){
if (val=='1') $("#form").submit();
});
return false;
});
});
当然,此代码会导致提交的表单中DELETE
数据中缺少POST
按钮的名称。有没有办法将这些数据添加到POST
数据或更好的方式来实现我的目标?
答案 0 :(得分:4)
您可以使用命名空间事件,在确认时取消绑定,然后重新触发:
$(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;
});
});
答案 1 :(得分:1)
有两种方法可以做到这一点。
Boxy
回调中将其附加到表单的操作作为查询参数。Boxy
回调中将该字段的值设置为按钮名称(或用于将命令传递到服务器的任何内容)。我不能扯掉一个jQuery示例(我自己更多的是一个Prototype人),但它应该是相当简单的。如果您正在进行优雅降级(允许在没有JavaScript的情况下提交表单),遗憾的是,这意味着您需要检查服务器上的隐藏字段(已启用JavaScript)以及按钮名称(它不是)侧。post
回调中处理它。答案 2 :(得分:0)
最简单的方法是在单独的表单中定义删除按钮。