uidialog多次发送表单

时间:2013-07-25 00:30:30

标签: jquery ajax jquery-ui-dialog

我有一个带有自定义按钮的jquery ui对话框,第一次发送数据很好,但是当我再次点击新打开的对话框时,它会发送两次,然后三次等等(没有页面重新加载)。如果我重新加载页面它工作正常,但为什么?这就是我的功能:

function openPopup() {
     $('#box').dialog({
         autoOpen: true,
         modal   : true,
         title   : 'my title',
         width   : 500,
         open : function (event) {
            var dialog = $(this); 
            $(".buttonclass").live('click', function(event) {
                dialog.dialog('destroy');
                alert('hello'); //This alerts hello once first time, twice second time, etc.
            });
         },
         buttons : [
             {
                 text: 'Cancel',
                 click: function() {
                    $(this).dialog("destroy");
                 }
             }
         ]
     });
    }

我错过了什么?我一直在环顾四周,发现像点击解除绑定,对话框破坏之类的东西,但这些都没有工作(因为你可以看到我正在破坏我的对话框)。

1 个答案:

答案 0 :(得分:0)

解决方案是在创建click事件之前使用unbind。这就是上面的打开部分应该是这样的:

open : function (event) {
      var dialog = $(this); 
      $(".buttonclass").unbind('click').click(function(event) {
           dialog.dialog('destroy');
           alert('hello'); //This alerts hello once always now.
      });
},

这样,没有多余的点击数据绑定到按钮,表单只发送一次。