.click()导致重复确认()&双重复制结果

时间:2014-11-27 23:35:02

标签: php jquery ajax click

使用CRUD应用程序


我有一个成功的CRUD CMS使用AJAX工作......也就是说,直到我添加了点击ajax事件的分页(我将在下面分享这个脚本)。

+ -----------------------------新----- -----编辑重复---- - 删除----- +
| --- + --------- + ---------------- + ------------------ -------------------------------- |
| O | 。标题 | 说明 | .................................................. .......... |
| --- + --------- + ---------------- + ------------------ -------------------------------- |
| O |第1项|布拉赫。 | .................................................. .......... |
| --- + --------- + ---------------- + ------------------ -------------------------------- |
| O |第2项|布拉赫。 | .................................................. .......... |
| --- + --------- + ---------------- + ------------------ -------------------------------- |
| O |第3项|布拉赫。 | .................................................. .......... |
| --- + --------- + ---------------- + ------------------ -------------------------------- |

工作原理:

点击按钮edit/duplicate/delete时...
1。用户收到确认提示“你确定......?” 2。所选复选框通过ajax发送到相应的href [.php]进行操作。
3。页面刷新

function actionButton () {
  if($(this+' span').hasClass("dead")) { }else{
        page    = $(this).attr("href");
        ids     = new Array()
        a       = 0;
        $(".chk:checked").each(function(){
           ids[a] = $(this).val();
           a++;
        })      
        if (confirm("Are you sure you want to affect the selected record(s)?")) {
         $.ajax({
                url         :   page,
                type        :   "POST",
                data        :   "id="+ids,
                cache       :   false,
                dataType    :   'json'
                })                              // end AJAX
         .done(function(data) {                     
              window.console.log(data);         // log data to the console so we can see                                                    
                                            // Handle ERRORS
                                            // After form submission, redirect a user
                                            // to another page
                window.location.reload();

          })
         .fail(function(data) {             // promise callback
              window.console.log(data);         // show any errors in console
          });
        }                                       // end CONFIRMed
        return false;
  };
};

点击:

$(document).ready(function() {      
    $('#btn_del').click(actionButton);          // DELETE record(s) button

    $('#btn_pub').click(actionButton);          // PUBLISH record(s) button

    $('#btn_unpub').click(actionButton);        // UNPUBLISH record(s) button

    $('#btn_dup').click(actionButton);          // DUPLICATE record(s) button
                                                // ----------------------------------
                                                // This feature is currently configured
                                                // to only allow duplication of
                                                // one(1) x record at a time
                                                // The configurations above disable
                                                // the DUPLICATE button when more
                                                // than one(1) record is checked
});

变化:

我添加了一个ajax点击分页管理器,用id=pagination填充$('#pagination').html(response); ...这个分页正如我所希望的那样有效。

+ -----------------------------新----- -----编辑重复---- - 删除----- +
| --- + --------- + ---------------- + ------------------ -------------------------------- |
| ....< 1 2 3 4 5> .................................................. ....................... |
| O | 。标题 | 说明 | .................................................. .......... |
| --- + --------- + ---------------- + ------------------ -------------------------------- |
| O |第1项|布拉赫。 | .................................................. .......... |

paginate.js

$(function(){
    $.ajax({
          url       : "populateRecordsPaginate.php",
          type      : "POST",
          data      : "actionfunction=showData&page=1",
          cache     : false,
          success   : function(response){ 
                        $('#pagination').html(response);
                      }
    });
          $('#pagination').on('click','.page-numbers',function(){
               $page = $(this).attr('href');
               $pageind = $page.indexOf('page=');
               $page = $page.substring(($pageind+5));

                $.ajax({
                    url     : "populateRecordsPaginate.php",
                    type        : "POST",
                    data        : "actionfunction=showData&page="+$page,
                    cache       : false,
                    success : function(response){
                                  $('#pagination').html(response);
                                }
                });
                return false;
          });
});

问题:

自从添加pagination.js后,现在......

  • 如果我不要点击pagination links中的任何一个,按钮操作就会像以前一样正常工作。
  • 如果我 DO 点击pagination links中的任何一个,则按钮操作的行为会有所不同:

    1. confirm alert碰巧重复一次,两次,有时三次
    2. 如果我确认每次弹出,那么操作最终会起作用,但DUPLICATE ...这似乎会产生双重复制,具体取决于我确认 ED

1 个答案:

答案 0 :(得分:2)

stackoverflow的帮助下找到它。

我发现我只需要将e.stopImmediatePropagation()添加到a​​ctionButton函数的开头。这似乎很好地解决了这个问题。

function actionButton (e) {
    e.stopImmediatePropagation();