2016-05-23 218 views
3

我有一个Django站点上的删除按钮的垃圾桶图标。Django删除确认

这只是一个带有i标签的锚标签,其中的href被设置为传递模型元素的id的删除视图。

它工作得很好,但我想创建一个对话框弹出窗口,要求在删除它之前进行确认。

我已经看到了一些方法来做到这一点,但他们都需要输入,而不是锚点。

我也需要在触控设备上进行这项工作。

如何将其更改为输入元素并将图标保留为按钮而不是显示提交按钮。我怎样才能让对话框弹出,当点击Yes时,将正确的url和id传递给提交?

任何意见将不胜感激。

回答

5

最简单的方法是添加一个确认提示:

<a ... onclick="return confirm('Are you sure you want to delete this?')">Delete</a> 

但你不应该做的内嵌JavaScript这样尝试添加一个类,它抽象掉。这是使用jQuery:

<a class="confirm-delete" ...>Delete</a> 
$(document).on('click', '.confirm-delete', function(){ 
    return confirm('Are you sure you want to delete this?'); 
}) 
+0

我会在哪里过的网址及ID – shenk

+0

你说现在正在工作,所以你会见好就收,由于是:当你把正确的前body标签关闭它的代码应该工作并添加onclick事件。我想它是在'href =“/ object/24/delete”'中。为简洁起见,我把'......'作为其他属性。 – dotcomly

+0

谢谢您添加jquery版本,绝对有助于看到内联和jQuery版本在一起! – natureminded

4

让这成为你的锚标记:

<a class="icon-trash" id="delete-object" data-object-id="{{ object.id }}">Delete</a> 

需要注意的是,我们有object.id与属性。我们将需要在JavaScript部分。

,你可以写这样的事情在页面的右下角之前body标签关闭:

与代码片段

在这里,您可以尝试演示UPDATE。

var elm = document.getElementById('delete-object'); 
 
var objectID = elm.getAttribute('data-object-id'); 
 
var resultDiv = document.getElementById('result'); 
 
elm.addEventListener('click', function() { 
 
    var ask = confirm('r u sure?'); 
 
    if (ask && objectID) { 
 
    var r = "Page will be redirected to </object/delete/" + objectID + "/>"; 
 
    resultDiv.textContent = r; 
 
    } else { 
 
    resultDiv.textContent = "User cancelled the dialog box..."; 
 
    } 
 
    return false; 
 
});
.delete-link { 
 
    background-color: red; 
 
    color: white; 
 
    border: 1px solid white; 
 
    cursor: pointer; 
 
    padding: 3px; 
 
} 
 
#result { 
 
    margin: 20px; 
 
    padding: 10px; 
 
    border: 1px solid orange; 
 
}
<a class="delete-link" id="delete-object" data-object-id="3">Delete</a> 
 
<div id="result"></div>