2016-05-23 162 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>