2012-10-20 145 views
0

在我的應用程序結果顯示爲表格格式。我的代碼生成刪除確認框

部分原因是,

{% for device in devices %} 
    <tr> 
    <td>{{ device.operator}}</td> 
    <td>{{ device.state }}</td> 
    <td>{{ device.tstampgps }}</td> 
    <td><button id='rec_delete'>Delete</button></td> 

    </tr> 
{% endfor %} 

即使我們按刪除按鈕,我需要從數據庫中刪除特定記錄。在此之前,我想提示一個確認框。 任何人都可以幫助我嗎?

+0

你有多個'button id =「rec_delete」'元素?這些應該有唯一的ID,並給他們一個類,這樣你可以更容易地找到他們像一個選擇器,如'tr.device button.delete'。然後你可以用'confirm()'和'return false'添加一個'click'監聽器來取消刪除。實際上,'return confirm('Delete?');'點擊處理程序應該足夠了。 –

+0

你可以給一些示例代碼? – Anoop

+0

我對'$ .click'的引用添加了一個輕微但重要的改變,您應該在使用AJAX函數時知道這一點(它會改變範圍,改變'this')。 –

回答

1

添加一條獨特的記錄標識符tha你可以將數據庫關聯到按鈕。一旦確認您使用AJAX將此標識符發送給服務器,並且數據庫將刪除服務器代碼。也更改ID類的重複元素,因爲ID必須是唯一的

HTML

<tr> 
    <td>{{ device.operator}}</td> 
    <td>{{ device.state }}</td> 
    <td>{{ device.tstampgps }}</td> 
    <td><button class='rec_delete' data-record_id="{{ device.DB_ID }}">Delete</button></td> 

    </tr> 

JS,你會與任何其他形式的元素名稱

$('button.rec_delete').click(function(){ 
    /* data() method reads the html5 data attribute from html */ 
    var record_id=$(this).data('record_id'); 

    if(confirm('Are you sure')){ 
     $.post('serverPage.php', { id: record_id}, function(){ 
      /* code to run on ajax success*/ 
      $(this).closest('tr').remove(); 
     }) 
    } 
}) 

服務器將收到帖子關鍵id

0

您可以點擊事件添加到您的JavaScript,如果用戶選擇「確定」按鈕,就可以發送到需要移除的記錄或任何

+0

如果我們按下特定記錄上的按鈕,如何在javascript中記錄數據? – Anoop

+0

你能給我一些示例代碼嗎? – Anoop

0

嘗試這種護理的視圖的請求:

<button id='rec_delete' onclick="return confirm('Are you sure?')">Delete</button> 
+0

按鈕放置在這裏的一張桌子上,當我們按下刪除按鈕時,我需要採取特定的記錄值。我怎樣才能做到這一點? – Anoop

1

由於我不知道Django,這不包括刪除部分,我認爲你會AJAXify(做一個異步請求刪除)。我也分別在這裏顯示$devices$deletes變量作爲局部變量,或多或少地顯示,您可以看到如何存儲引用,然後從那些引用(我認爲這是一種比重新選擇反覆的更好實踐)的工作。

還要注意使用:

jQuery(document).ready(function r($){ 

我在全球範圍內,這在較大的應用程序,你總是應該從與其他庫/框架可以使用$()衝突的繼續使用jQuery()。這也是一種最佳做法,您可以在該匿名函數(閉包)內使用$()。最好習慣這樣做,國際海事組織。

<table> 
    <thead> 
     <tr> 
      <th>Operator</th> 
      <th>State</th> 
      <th>T-Stamp GPS</th> 
      <th>&nbsp;</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr class="device"> 
      <td>Verizon</td> 
      <td>OK</td> 
      <td>033830928</td> 
      <td> 
       <button type="button" id="d001" class="delete">Delete</button> 
      </td> 
     </tr> 
     ... 
    </tbody> 
</table> 

注意

我做了一個輕微的,但重要的變化,參照$self,因爲AJAX將this後運行success處理超出範圍:

jQuery(document).ready(function r($){ 
    var $devices = $('tr.device'), 
     $deletes = $devices.find('button.delete'); 

    $deletes.click(function d(){ 
     var $self = $(this).parents('tr.device'), 
      del = confirm('Delete device?'); 

     if (del) { 
      // Do $.ajax() request, maybe using the 
      // clicked button's ID. Or you could put 
      // the row to delete ID on the TR element. 
      // And then on success of the AJAX, run: 
      $self.fadeOut(500, function f(){ 
       $self.remove(); 
      }); 
     } 
    }); 
});​ 

http://jsfiddle.net/wMqr8/2