Each time the modal is shown, you are binding another click event to the 
delete button.  Move the click event binding outside of the modal show 
event, I think that might do it for you.

I could also recommend a few ways to simplify this entire process...
1.  When the a.delete-button is clicked, set the uid directly on the 
modal's delete button as a data attribute:
$('a.delete-button').click( function() {
  $('a#delete').data('uid', $(this).attr('rel'); // You should also change 
the uid to a data attribute of this link element: data-uid="{{user.uid.0}}"
});

2.  You only need to mess with the click event for delete, I'm not sure all 
of that other stuff is necessary...
$('a#delete').click (function() {
   uid = $(this).data('uid');
   // Handle your post delete logic here
});

Hope this helps

On Friday, April 27, 2012 6:38:15 AM UTC-7, tinti wrote:
>
> Hi,
>
> my modal window used in a table do delete user accounts fires post action 
> as often as I opened the modal already.
> Means on first user deletion the post request is made one time, second 
> user deletion fires post request 2 times and so on.
>
> Button to open modal:
> <a href="#delete-modal" class="delete-button" data-toggle="modal" rel="{{ 
> user.uid.0 }}"><i class="icon-trash"></i> Delete</a>
>
> Modal definition:
>     <div class="modal hide fad" id="delete-modal">
>         <div class="modal-header">
>             <a class="close" data-dismiss="modal">x</a>
>             <h3>Delete user confirmation</h3>
>         </div>
>         <div class="modal-body">
>             <p>Please confirm removal of user <strong><i 
> id="uid"></i></strong> by clicking the <strong>Delete</strong> button</p>
>         </div>
>         <div class="modal-footer">
> {#            <a href="#" class="btn btn-primary" data-dismiss="modal" 
> id="cancel">Cancel</a>#}
>             <a href="#" class="btn btn-danger" id="delete">Delete</a>
>         </div>
>     </div>
>
>
> The js I use to modify and fire things:
>         $(document).ready(function() {
>             var uid;
>
>             // Delete button
>             $('a.delete-button').click(function() {
>                 uid = $(this).attr('rel');
>             });
>
>             // Delete function
>             $('#delete-modal').bind('show', function () {
>                 $('.modal-body').empty().html("<p>Please confirm removal 
> of user <strong><i>" + uid + "</i></strong> by clicking the 
> <strong>Delete</strong> button</p>");
>                 $('#delete').show();
>                 $('i#uid').empty().html(uid);
>                 $('a#delete').click(function(){
>                     $.post("/admin/delete/user/" + uid + "/",
>                             {"csrfmiddlewaretoken": "{{ csrf_token }}"},
>                             function(data){
>                                 console.log("Post " + reload);
>                                 $('.modal-body').empty().html('<p>' + data 
> + '</p>');
>                                 $('tr#' + uid).remove();
>                                 reload = true;
>                             })
>                             .error(function() { 
> $('.modal-body').empty().html("<div class=\"alert alert-error\"><h4 
> class=\"alert-heading\">Received an error from server!</h4><br/>Please try 
> again later.</div>"); })
>                             .complete(function() {
>                                 $('a#delete').hide();
>                             });
>                     return false;
>                 })
>             });
>             $('a#cancel').click(function(){
>                 $('#delete-modal').modal('hide');
>             });
>         });
>
> This is my example, does someone has an idea?
>
> Thanks!
>

Reply via email to