在Django中使用简单的JavaScript确认删除

1 投票
2 回答
2055 浏览
提问于 2025-04-18 17:25

我知道这个问题已经有很多版本了,但我发这个问题是因为没有一个能完全满足我的需求。

我想要的就是:

  • 用户点击“删除”按钮
  • 用户会看到一个JavaScript确认对话框
    • 如果选择“是”
      • 继续进行删除
    • 如果选择“否”
      • 什么都不做

我正在使用Django的通用删除视图(DeleteView)

class CommentDelete(DeleteView):
    model = Comment
    success_url = 'index.html'
    template_name = 'index.html'

    @method_decorator(login_required)
    def dispatch(self, *args, **kwargs):
        return super(CommentDelete, self).dispatch(*args, **kwargs)


    def get_object(self, *args, **kwargs):
        obj = super(CommentDelete, self).get_object(*args, **kwargs)
        if not obj.owner == self.request.user:
            raise Http404
        return obj

我的删除按钮看起来像这样:

<h2><a href="comment/{{ cmt.id }}/delete" class="cmt_del">
    Delete
</a></h2>

--编辑--
我已经成功弹出了对话框,但不知道接下来该怎么做。

当我在确认对话框中点击“是”时,如何删除特定的评论呢?

2 个回答

1

你应该在按钮点击时阻止默认的操作

$(document).ready(function(){
    $('.cmt_del').click(function(e){
        e.preventDefault();
        var a = confirm('Sure?');
        if(a){}
        else if(!a){}
    });
});
2

那要不要加一个自定义的数据属性,这样方便访问呢?

[HTML]
<a href="comment/{{ cmt.id }}/delete" class="cmt_del" data-confirm="true">
    Delete
</a>

[jQuery]
$('*[data-confirm="true"]').on('click', function() {
    return confirm("Are you sure?");
});

撰写回答